Jump to content

Leaderboard

Popular Content

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

  1. 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
    6 points
  2. M2 Download Center Download Here ( Internal ) Hi, here I publish my edit of the public Render Target System. I hate it, when people earn money with public systems. Preview: [Hidden Content] DL: [Hidden Content] Original Thread [Hidden Content]
    5 points
  3. V42 out! It's mostly a minor fix. Implemented the box collision handling (it requires additional code if you use .mde with boxes for launcher) Fixed the saving of msf files in the FlyTab
    5 points
  4. GF v21.2.10.0 Patch (Metin2 Download) Contents: root-meta, dumped binary, protos(out of date, types/values will be checked later). 2021 Summer costumes, new pet. All files are unpacked in a folder.
    5 points
  5. Hey guys, I noticed while the character was moving, attack packets are processed. It´s nothing special and just a small improvement in battle.cpp below: int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int & iRetDam) { add: if (pkAttacker->IsStateMove()) return (BATTLE_DAMAGE);
    4 points
  6. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Anyway now you can sell shop items with sockets and attrs at shopex. New price types. New sorting options Every Item can have different price type. price_type: 1:Gold 2:Second Coin 3:Item 4:EXP sort: Asc,Desc,Vnum,Price,Name,Type
    3 points
  7. 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
  8. 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.
    3 points
  9. GF v21.0.8 Patch (Metin2 Download) (Full client) Contents: root-meta, dumped binary, locales with protos new monsters, maps, dungeon, armors, 2021 easter costumes and mount the package contains the separated folders(m00xxx) and the unpacked files together in one folder.
    3 points
  10. M2 Download Center Download Here ( Internal ) Download Here ( Latest Version ) This WE is a version compiled directly by me which includes infinite fixes and features. It's certain that you won't longer use the worldeditor_en! To make it simple, I wrote all the details about this feature and the common WE inside the relative config file: (called WorldEditorRemix.ini) ; Info: ; -) 100% translated ; -) granny2.11 ; -) F6 as Insert alternative ; -) many default features not present inside the worldeditor_en (probably, that binary was taken out from an SVN long time ago and resource hacked) such as Ins for all regions and skyboxes ; -) WASD UPLEFTDOWNRIGHT to move around (+asynchronous diagonally movements) ; -) UP-LEFT-DOWN-RIGHT to move around*10 (+asynchronous diagonally movements) ; -) config file for few things ; Output options by default ; few others such as default WASD movement ; whether or not Insert should let you go where you were before the press ; no MAI dump when saving atlas ; whether or not DevIL should compress and remove alpha from minimap.dds ; whether or not loading .mdatr building heights ; default textureset when creating maps ; overlapped tabs ; other stuff ; -) several bugfixes ; default title app name ; attempting to write to an empty textureset name when creating new maps ; ViewRadius doubled every load&save ; shadowmap.dds creation ; assert when saving atlas ; crash when adjusting height ; many buffer under/overflows ; *.mdc collision data saving (for game_test) ; not checking output options when loading maps ; water brush waterid bug (the id was increased until 256 each time the function was called; now it's based on the water height just like it should be) ; init texture map reload map crash and last 2px always blank ; square shape even for up/down height brushes ; add textureset texture button (+multiselection) ; remove textureset texture feature (just selecting a texture from the list and pressing DELETE) ; creation of empty textureset with index -1 (changed to 0) ; change baseposition button ; misspelled stuff ; skybox bottom image (nb: you also need a fixed launcher for this) ; removed boring CTRL requirement (to move the camera) when editing daylight/attr ; fixed refresh texture imagebox onKey pressing the down/up keys (like when onClicking them) ; fixed TextureSet file creation if not existing ; fixed new wolfman motion event handling ; fixed crash when editing animation attack bones and 00010.gr2 was missing ; fixed locale/ymir/mob_proto load (it autodetects the most common structures) and <map>/regen.txt load/save ; fixed ./group.txt load ; fixed load/save/edit <map>/regen.txt (very nice for "m" regens, untested for "g") ; load from PACK is available if pack/property is present! Be sure pack/Index exists! ; fixed multi-object selection crash ; fixed crash when previewing a missing texture ; fixed not clearing of old environment (e.g. skybox) when switching maps ; fixed not creating property folders in root tree (object tab) ; fixed object attachment in Model Tab ; fixed newly particles names in Effect Tab ; fixed crash when saving a .mse script with no mesh model ; fixed crash when inserting a lower gradient ; -) created new TextureSet field when creating new maps ; -) created new Change/Delete Texture buttons when double-clicking a texture ; -) created Background Music playback and Shadow Recalculate buttons ; -) created water height "set 0z", "+1z", "-1z" buttons ; -) server_attr generator ; -) every crash will generate a logs/WorldEditorRemix_{target}_{date}.dmp file useful for debugging ; -) implemented a "water path" mapsettings option (the launcher requires additional code) ; -) implemented a "wind strength" msenv option (the launcher requires additional code) ; -) the "encrypt data" feature does nothing (unimplemented) ; Note: ; 0) there are no regressions in this version! a bug here means it'd also be present in older WE versions too! ; 1) the shadow output option is tricky: when UpdateUI is called, shadows are hidden although the check is pressed (i implemented the shadow recalculate function for that) #fixed since v11 ; 2) the bgm player requires /miles and the fadein/out doesn't work until you load the map ; 3) the adjusting height button works only if mdatr height is detected ; 4) the Debug version is laggy when working on maps such as n_flame_dungeon and n_ice_dungeon (by default, because SphereRadius are intensively checked in SphereLib\spherepack.h) ; 5) if you load a map, the script panels (where you load .msa et similia) will have the camera perspective a little fucked up (0z instead of -32767z or 0x 0y -163,94z) ; 6) few tree objects are not movable and/or highlightable after placed on the ground and their selection is invisible (you can still delete 'em) ; trick: draw a square selecting a normal building and 'em, then move the building and you'll see all of 'em will be moved! ; 7) the server_attr generator will clean all the unused flags! attr[idx]&=~0xFFFFFFF8; ; 8) you can read files from pack/Index 'n stuff but be aware that Property will not be considered! #fixed since v15 ; 9) the MonsterAreaInfo features are laggy and buggy as fuck ; 10) even though you can select many textures at once (using ctrl+click on textureset list; for brushing or initializing a base texture), you can't delete more than one at the same time ; 11) the .mdatr height is tricky; if you move a building, the height will not be refreshed until you put a new building or whatever you want to trigger the update event ; 12) by default, the worldeditor tries to render only the first 8 terrain textures of a 32x32px region (nb: a 1x1 map is a 256x256 px region) ; 13) the minimap rendering cannot catch the buildings/trees inside the first 2x2 regions due a ymir cache fault and you need to set the camera to "see" them ; 14) when the textureset, environment, etc load fails, the old filename still remains loaded ; 15) the attr flag "3" (three) has no implementation, so don't use it! ; 16) load from PACK doesn't load texturesets from files for first (if they are already in pack/), and the object placer's object list will remain empty because it takes the list from property/ (and not from pack/property) ; 17) to save the regen.txt you press CTRL+S ; 18) if you enable the wireframe (f4) when on Attr Tab, you see the terrain all white ; 19) the water brush disappears when the camera renders the waterwheel small/big effect ; 20) the monster area info goes under ground if you're outside the relative sectree ; 21) the full skybox may be displayed only after the top picture has been added (if the other textures have already been inserted) ; 22) the slider in the Attr Tab is something like "16 photoshop layers" in which you can split your attrs; not so helpful and quite confusing sometimes ; 23) the fixed model - object attachment attaches static objects (hairs'skeleton will not mirror the playing animation) ; 24) in environment tab, if you insert lower gradients, you may end up with an out of range crash #fixed since v30 ; 25) brushes working out-of-screen/map-range may affect random terrain places ; TODO: ; A) look at more than 8 textures for region -> DONE ; B) create a shortcut to fix the #5 note -> DONE ; C) disable the radius <= GetRadius()+0.0001f check to fix the #4 note -> REJECTED ; the worldeditor_en calls this assert and, if ignored, the lag ceases to exist (this will not occur in source version) ; at least, if the release version is not a problem for you, use that in those few cases when .mse are abused and try to kill the debug one ; D) translation in more languages other than english -> REJECTED ; english should be enough! ; E) alternative path for d: -> REJECTED ; you can mount d as a subpath of c like this: ; subst d: "c:\mt2stuff" ; F) need to fix note #19 #25 -> TODO [shortcuts] ; ### SHORTCUTS ; # ESC(ape) Clean cursor ; # Canc(el|Delete) Delete stuff such as selected buildings ; # Ctrl+S Save map ; # Ins(ert) or F6 Save shadowmap|minimap.dds ; # F3 BoundGrid Show/Hide ; # F4 Render UI Show/Hide ; # F11 WireFrame Show/Hide ; # R Reload Texture ; # Z and X Decrease/Increase Texture Splat by 0.1 ; # CapsLock Show GaussianCubic effect if shadows are displayed ; # L-Shift+1-6 Show TextureCountThreshold flags (&2-7) as colors on the ground ; # L-Shift+8 Set Max Showable texture to 8 (de-fix note 12) ; # L-Shift+0 Set Max Showable texture to 255 (fix note 12) ; # H Refresh MDATR Heights (useful when you move an object) (fix note 11) ; # Y Set Perspective as default (fix note 5) ; # T Set the Camera to catch all the object on the screen (w/a note 13) then you'll be ready to press Insert/F6 ; # DO NOT HAVE AN OBJECT SELECTED WHEN USING THOSE SHORTCUTS (MW1-7) ; # MouseWheel+1 move cursor x rotation ; # MouseWheel+2 move cursor y rotation ; # MouseWheel+3 move cursor z rotation ; # MouseWheel+4 move cursor height base (1x) ; # MouseWheel+5 move cursor height base (0.5x) ; # MouseWheel+6 move cursor height base (0.05x) ; # MouseWheel+7 move cursor ambience scale (1x) ; # MouseWheel+Q move selected object height base (1x) ; # MouseWheel+9 move selected object x position (1x) (+asyncronous) ; # MouseWheel+0 move selected object y position (1x) (+asyncronous) ; # MW+RSHIFT+9|0 as above but *10x (+asyncronous) ; # MW+RCONTROL+9|0 as above but *100x (+asyncronous) ; # MouseLeft Insert Objects ; # MouseRight Move camera (it could require CTRL too) ; # SPACE Start move/selected animation in Object/Effect/Fly CB ; # ESC Stop animation in Effect/Fly CB [config] ; ### CONFIG OPTIONS VIEW_CHAR_OUTPUT_BY_DEFAULT = 1 VIEW_SHADOW_OUTPUT_BY_DEFAULT = 1 VIEW_WATER_OUTPUT_BY_DEFAULT = 1 ; WINDOW_HEIGHT_SIZE = 1080 ; WINDOW_WIDTH_SIZE = 1920 WINDOW_FOV_SIZE = 45 ; #100 = 1px (minimal px movement when pressing WASD) WASD_MINIMAL_MOVE = 100 ; came back from where you were before pressing Insert/F6 NO_GOTO_AFTER_INSERT = 1 ; disable MAI dumps when saving atlas and/or pressing Insert/F6 NOMAI_ATLAS_DUMP = 1 ; disable minimap.dds alpha saving and enable compression NOMINIMAP_RAWALPHA = 1 ; enable .mdatr height collision loading when moving on buildings or adjusting terrain DETECT_MDATR_HEIGHT = 1 ; disable fog when loading maps NOFOG_ONMAPLOAD = 1 ; refresh all checkbox configurations when loading maps 'n stuff REFRESHALL_ONUPDATEUI = 0 ; set a default mapname prefix when creating new maps ("" to disable) NEW_MAP_MAPNAME_PREFIX = "metin2_map_" ; display a default textureset when creating new maps ("" to disable) ; note: it loads the filepath if exists, otherwise it will create an empty textureset file NEWMAP_TEXTURESETLOADPATH = "textureset\metin2_a1.txt" ; create a default textureset as "textureset/{mapname}.txt" ; note: this option is not considered if NEWMAP_TEXTURESETLOADPATH is not empty. [before v24] ; note: this option is not considered if the TextureSet path input is not empty when creating a new map [since v24] NEWMAP_TEXTURESETSAVEASMAPNAME = 1 ; remove the weird attr flags from the generated server_attr SERVERATTR_REMOVE_WEIRD_FLAGS = 1 ; show diffuse lighting to object VIEW_OBJECT_LIGHTING = 1 ; path of mob_proto used for regen MOB_PROTO_PATH = "locale/ymir/mob_proto" ; select monster area info checkbox at startup VIEW_MONSTER_AREA_INFO = 0 ; brush cursor / object selection color RGB float between 0.0 to 1.0 (default: green -> 0 1 0) RENDER_CURSOR_COLOR_R = 0.0 RENDER_CURSOR_COLOR_G = 1.0 RENDER_CURSOR_COLOR_B = 0.0 Download: [Hidden Content] How To Map: This release will not cover this part. Look at CryPrime`s tutorials to understand how to do it. About the ServerAttr Generator: (since v14) This is a beta function but it should work fine. I tested it on gm_guild_build (1x1), metin2_map_a1 (4x5), metin2_map_trent (2x2), metin2_n_snowm_01 (6x6) and the result was the same as the blackyuko map editor. (I use a different lzo version and I clean deprecated and useless flags, so the size is different from this last one but the "final image" will be the same; using game_test to fix his server_attr will let mine and his perfectly equal byte per byte) I also give you the source code of my server_attr generator function. CLICK A server_attr file is based on all the attr.atr files merged into a one raw RGBA image and each one scaled from 256x256 to 512x512. After that, the image will be splitted into sectors of 128x128 px and each one compressed using lzo compression. The server_attr header is composed by the size of the map*4. (e.g. a 4x4 will have a 16x16 size with 256 sectors inside) (gj ymir CLICK) An uncompressed server_attr sector is just like this: CLICK (the sub 4 byte header is the size returned by the LzoCompress which indicates how much the compressed sector data are large) Each attr.atr is just like this: CLICK (the header is composed of 6 byte in total: 3 WORDs respectively for version, width and height; they are always 2634, 1, 1 so don't bother about it) A single attr.atr scaled from 256x256 to 512x512 will be just like this: CLICK You can use the game_test (from source) to perform few tasks like: Create a server_attr from a .mcd file (I won't suggest it) a <collision data filename> <map directory> Regenerate an old server_attr to server_attr.new using the current lzo compression and cleaning useless flag CLICK c <filename> Other stuff such as b to create a character instance or q to quit About the SkyBox Bottom pic fix: (since v21) Both metin2launch.exe and worldeditor.exe should be edited to see the bottom pic of the skybox. Ymir messed up the code wrongly flipping the bottom image. Open ./Srcs/Client/EterLib/SkyBox.cpp and replace: ////// Face 5: BOTTOM v3QuadPoints[0] = D3DXVECTOR3(1.0f, -1.0f, -1.0f); v3QuadPoints[1] = D3DXVECTOR3(1.0f, 1.0f, -1.0f); v3QuadPoints[2] = D3DXVECTOR3(-1.0f, -1.0f, -1.0f); v3QuadPoints[3] = D3DXVECTOR3(-1.0f, 1.0f, -1.0f); with: ////// Face 5: BOTTOM v3QuadPoints[0] = D3DXVECTOR3(1.0f, 1.0f, -1.0f); v3QuadPoints[1] = D3DXVECTOR3(1.0f, -1.0f, -1.0f); v3QuadPoints[2] = D3DXVECTOR3(-1.0f, 1.0f, -1.0f); v3QuadPoints[3] = D3DXVECTOR3(-1.0f, -1.0f, -1.0f); then recompile. Credits:
    2 points
  11. M2 Download Center Download Here ( Internal ) Download: workupload.com/file/wZymNkb Password: m2dl-cxlgizeh
    2 points
  12. This tutorial is going to teach you how to compile, run and configure a server on Windows. I needed something like this a few days ago and since it doesn't exist, I decided to make it There is no addition or modification in the source or client (except for small bonuses). 0. Beginning At the end of the topic there will be two links where you will need to download: Client + Server + Source MySQL The client is based on the Metin2 Client fur r40250, I just edited it to have the classic format. Regardless the Server and Client source. 1. The files We will need to download the following files: Visual Studio Community 2019 - In order to compile both the server and the binary, we're going to need this MySQL - Connect and create the database 2. Installing The installation is easy enough for me to consider that I don't need to spend much time on this, however I hope this two pictures will facilitate (more) on what you need to do: Visual Studio Community Note: You actually just need the MSVC v142, C++ CMake, C++ ATL, C++ MFC and C++/CLI for this to work MySQL: Warning: In this tutorial we're going to use Mysql Server 5.7.33 X64 but you can (must) upgrade it to 8.0 2.1 Installing Server / Client / Database Here you need to pay attention because there's a limitation: Warning: You must unzip the file "dev" on C:\ If you don't want, follow the Mali61's topic and you need to create manually the symlinks for each core on the server. This is how it should be. Client: There isn't much to say, in pack/ you already have root and locale_de unpacked but since this is going to be localhost only, you don't need to change nothing on the serverinfo.py Bonus: I translated the client to English, just because Database: 1) Windows Key + R and write services.msc 2) Search for MySQL57 (or the version you installed) and click on Stop Since Im portuguese, yeah 3) Go to directory C:\ProgramData\MySQL 4) In the folder MySQL Server 5.7 (or the version you installed) and in the folder Data, paste the files you previously downloaded and unziped from mysql_dev.rar 5) On services.msc, start the MySQL process Back it again with the portuguese Server: These images are referenced in each core's CONFIG and conf.txt, respectively where the location is on directory C:\dev\2. Server. Warning: Don't forget to change the MySQL's user password! You need to put the same password you had when installing the MySQL. 3. Compile Server / Client Source There is nothing introductory since it is something very simple that you will be able to. Server: It's quite simple, to build the server source, we just need to open the file dev_server.sln which is located in C:\dev\1. Svn\Server\build You can build all at once or separately. Bonus: I linked the files to go to the directory C:\dev\2. Server\share\ so you don't need to c&p multiple times. Client: Same as before, open the dev_solution.sln which is located in C:\dev\1. Svn\Client Since I have a good computer, I enabled the multi-processor compilation option. If your computer is very slow while you are compiling, I suggest you deactivate by going to Properties in all the builds. 4. Starting the Server On the main directory of the server (C:\dev\2. Server) you'll have 2 bat files: start.bat* - As the name says, it will start the server clear.bat - It will clear all the server's logs * I forgot the make it dynamic so if you don't want to have on the C:\dev, you'll need to change the directory. Execute start.bat and it will show up first the db.exe, then auth's game.exe and last channel1's game.exe And there you have it, your server is now online! 5. Debug You can debug by going to Debug -> Start New Instance Bonus: I linked everything so you don't have to worry about anything 5. Credits I like to say that I don't know anything about anything and as such, everything here has its credits. @Mali61 - Client/Server compilable with VS2019 (Server & Client) @Karbust - If it wasn't for him, I couldn't have done this ThatGuyPT - The base was from his Windows Serverfiles 6. FAQ Q: Why didn't you use xampp instead of MySQL? A: At the moment I use MySQL a lot even outside of Metin2, so it makes more sense to me that it be this way. However, it is exactly the same, especially on localhost. Q: Can I migrate the source to FreeBSD? A: Yes, you can! As long as you have cmake configured, you can distribute to FreeBSD and use it there. Q: What is the id and password to enter the game? (I put this question because I know there will be someone asking this) A: You can create an account in the database, but you can use id: admin pw: 123 7. Links dev - mysql_dev All In One (Internal) If you have any questions that I can answer, feel free to write a post here.
    2 points
  13. M2 Download Center Download Here ( Internal ) Hey guys, Last night I was kinda playing with granny a bit and this tool was born. I hope it will be useful for most of you! Optimize, change textures, convert to fbx or 3ds, etc... Download: [Hidden Content] Usage: Just drag and drop a gr2 file on the exe and choose what you would like the program to do. P.S.: Don't be surprised if the new gr2 file becomes bigger than it was, it is because this tool saves them without compression for better performance.
    2 points
  14. M2 Download Center Download Here ( Internal ) Hello, this script is available for some time already, but i didnt find time to do this earlier. I won't describe everything step by step, all you need to know is in the video. What software do you need? - 3Ds max - Noesis Only thing you need to do is download and paste gr2 script into noesis plugin/python folder, that's it. Download: Video: Original topic (on Xentax) All credits goes to jayn23 from xentax!!
    2 points
  15. M2 Download Center Download Here ( CN ) - Download Here ( DE ) - Download Here ( ES ) - Download Here ( KR ) Download Here ( GR ) - Download Here ( IT ) - Download Here ( NL ) - Download Here ( HU ) Download Here ( PL ) - Download Here ( RO ) - Download Here ( SG ) - Download Here ( US ) Download Here ( AE ) - Download Here ( CZ ) - Download Here ( DK ) - Download Here ( FR ) Download Here ( PA ) - Download Here ( PT ) - Download Here ( RU ) - Download Here ( TR ) Download Here ( BR ) - Download Here ( BETA ) - Download Here ( EN ) - Download Here ( MX ) Hey guys, I've stumbled upon some old Metin2 clients on an old DVD, so I thought I'd share them with you. I also included some of the already existing clients on this forum. Table of Contents: Gameforge June 2007: EN December 2008: DE, ES, FR, IT May 2010: DK, EN, ES, FR, GR, HU, NL, PL, PT, RO, TR, US August 2010: PA (Beta) March 2011: TR April 2011: DK, EN, ES, FR, GR, HU, NL, PT, RO, TR, US December 2011: AE, CZ, DE, DK, EN, ES, FR, GR, HU, IT, MX, NL, PL, PT, RO, RU, TR, US March 2012: MX March 2013: EN (13.03.2013), EN (28.03.2013) April 2013: CZ, DE, ES (16.04.2013), ES (17.04.2013), FR (16.04.2013), FR (17.04.2013), IT, PL, RU June 2013: TR September 2013: DK, GR, HU, NL, PT, RO, US, PA (Beta) July 2015: CZ, DE, DK, EN, ES, FR, GR, HU, IT, NL, PL, PT, RO, RU, TR, US Singapore (TEC) April 2012 May 2012 US (G4Box/Z8games) November 2007 April 2008 (repacked) (Original topic here) October 2008 October 2009 April 2011 September 2011 Brasil (Ongame) 2015 (v14) 2016 (v15) April 2018 (v16) July 2018 (v17) February 2019 (v18) April 2019 (v19) May 2019 (v20) August 2019 (v21) Other August 2005: CN Beta client (YMIR) (Original topic here) December 2012: KR (Webzen) (repacked) (Original topic here) 2015 (ver. 0.0.0.1): Gameforge Beta 2019 (ver. 0.0.0.2): Gameforge Beta Pictures: Download Links: Archive.org: [Hidden Content] Torrent download (also using archive.org as a webseed): [Hidden Content] GameForge direct links: Should you have other clients (installers would be great!), please leave a reply to this topic with a download link and I'll happily add them to the collection. Edits: April 20th, 2020: Added many clients from Gameforge's web download server. April 21st, 2020: Added more clients that I've discovered on GF's download server. April 21st, 2020: Added all the clients I could find on GF's server. December 30th, 2023: Reuploaded the collection on archive.org, added Metin2 SG (14.04.2012) client thanks to @ForgiveN March 20th, 2014: Added 2011 & 2012 Gameforge Mexico clients, US April 2011 client, Gameforge August 2010 beta client Cheers, Exynox.
    2 points
  16. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Create app at here:[Hidden Content] Copy CLIENT ID Then change Discord.h/DiscordClientID Add images at here: example my image's name is image1 You can also use smallImageKey and smallImageText
    2 points
  17. 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.
    2 points
  18. 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.
    2 points
  19. M2 Download Center Download Here ( Internal ) Description : The mount will follow you. The bonuses is set from item_proto. [Hidden Content] [Hidden Content] [Hidden Content] Code is based on default pet code from Ymir, i don't offer support for extra features, details, anyway easy for use. (Sorry for tutorial, not so perfect.) Download (Reupload): [Hidden Content]
    2 points
  20. M2 Download Center Download Here ( Internal ) As the title says, here's how you can synchronize your skill_table from client with skill_proto from server. [1]. First of all we've to rewrite the enum part of tokens (which is used in CPythonSkill::RegisterSkillTable), that means we change the order of index-tab-line with a new order, because ymir didn't used all columns. In that way we keep the file much cleaner and just with necessary columns (9 columns instead of 27). Srcs/Client/UserInterface/PythonSkill.h Search for the next enum: Replace it with: Srcs/Client/UserInterface/Locale_Inc.h [2]. Compile the source client again. [3]. Open Navicat (preferably the latest versions) and do the following things: Open player table Export Wizard -> Mark skill_proto -> Export to ../location/skilltable.txt Export format -> *.txt Unmark All fields then Unselect All Select available fields: -> {'dwVnum', 'bMaxLevel', 'bLevelLimit', 'szPointPoly', 'szSPCostPoly', 'szDurationPoly', 'szDurationSPCostPoly', 'szCooldownPoly', 'dwTargetRange'} Unmark: Include column titles Text Qualifier: None Copy the skilltable.txt from Desktop to ../locale/en/ HOW-TO - VIDEO (The video is just an example, please follow the tutorial from step [3]) [Hidden Content] Thanks to @Syreldar for the idea.
    2 points
  21. M2 Download Center Download Here ( 102241 + Source ) (Password: metin2) Download Here ( 10141274 ) (Password: metin2) Hi, I've been working on a more complete Eter management solution, still a work-in-progress. Introduction & description I've always hated the lack of organization when building or editing large quantities of files using the current tools, also they all lack a good UI, as a result I started making my own. It's meant to have a profile-based approach (you create your profile, which corresponds to a client) and all files regarding this and only this profile will be in the same place. This is a community-driven project, so I'll change it according to our needs. Requirements - .NET framework 4.5, previous versions won't work for the simple fact that I'm using some of the latest updates (which lack downward compatibility). FAQs File description Main features list - Profile-based approach to improve organization (image) - Index preview, and item selection (both for unpacking and packing, image) - Quick unpack and repack functions (image1, image2) - Size optimizer, it finds duplicates and not compressed files (image) Planned development - Implement global quick pack & repack, it will enable users to quickly process files outside of the current profile. (implemented) - Improve Size Optimizer, adding the capability to automatically repack all needed files instead of just showing informaton. - Improve "Output log" and "Detailed log" windows. (implemented) - Improve human-error prevention and exception handling (the most importat one, at the moment) - Add support for multi-threaded unpacking & packing actions while also setting a user-defined limit, for example: -- You can add 20 files to the operations list, while only X being processed at a time, to prevent crashes. Known issues and limitations - Limitation: if an item inside the epk file is greater than 600mb (or its encryption/decryption size), the file will be ignored, this is a known limitation of the .NET framework for programs targeting x86 architectures (the real cap is somewhere between 1.2-1.6gb, but to prevent crashes I downsized it) - No support for multi-threaded actions. - Sometimes when clicking enter it won't update the GridView (FIXED) - Packing with quick unpack will output a wrong file Path How to setup your profile IMPORTANT NOTE: In some files, you'll notice a message in the "Output log" window alerting you to some files with different hash than expected, this is due to the fact that most eix files are not 100% accuretly built. You can confirm the integrity of the file by extracting the same file with Tim's unpacker, you'll notice it's the same checksum. PLEASE READ THIS BEFORE USING THE SIZE OPTIMIZER. Download: Mega.co.nz VT~ Change-log Credits & final notes Used oberhumer.com for the LZO algorithm. Thanks to: - Tim, for helping me out understand how Eter files work, general architectural design input and guidance. - Marty, for helping me find out some major bugs, aswell as pointing out various errors in my implementations. - MadTiago, MarcoTuna, Pacificador, Kforce and Alejandro, for being my test slaves .
    2 points
  22. M2 Download Center Downlaod Here ( Internal ) Download Here ( GitHub ) Please dont flame me. @Mali61 push me to pubblish here. Video
    2 points
  23. Hey guys, maybe you heard already about a new waithack method with poisonous cloud and some other stuff. i don´t want to go into details and just share a potential fix for that (i could not test it completly so some feedback is appreciated) in char.h // below bool bUsed; bool bSkillCD; DWORD dwHitCount; // add after bUsed(false), bSkillCD(false), dwHitCount(0), // below bool HitOnce(DWORD dwVnum = 0); bool IsSkillCooldown(DWORD dwVnum, float fSkillPower); // above void ResetSkill(); bool IsSkillCooldown(DWORD dwVnum, float fSkillPower) { return m_SkillUseInfo[dwVnum].IsSkillCooldown(dwVnum, fSkillPower) ? true : false; } in char_skill.cpp // above bool TSkillUseInfo::UseSkill(bool isGrandMaster, DWORD vid, DWORD dwCooltime, int splashcount, int hitcount, int range) bool TSkillUseInfo::IsSkillCooldown(DWORD dwVnum, float fSkillPower) { DWORD maxHitCount = 0; if (dwVnum == SKILL_KWANKYEOK || dwVnum == SKILL_HORSE_WILDATTACK_RANGE) { if (dwVnum == SKILL_KWANKYEOK) maxHitCount = static_cast<DWORD>(2 + floor(6 * fSkillPower)); else if (dwVnum == SKILL_HORSE_WILDATTACK_RANGE) maxHitCount = 5; dwHitCount++; if (dwHitCount > maxHitCount) return true; return false; } if (!bSkillCD) return true; bSkillCD = false; return bSkillCD; } // below bUsed = true; bSkillCD = true; dwHitCount = 0; in char_battle.cpp // above LPITEM pkBow, pkArrow; if (m_bType > 0 && m_me->IsSkillCooldown(m_bType, static_cast<float> (m_me->GetSkillPower(m_bType) / 100.0f))) return;
    2 points
  24. c2d good memories I still have my E8600 in my old pc. But anyway afxres.h is part of c++ MFC so if somebody not install that, the client source will not compile because of missing afxres.h
    2 points
  25. i am just shared if you think you can do better, don't hesitate, we are here for the community after all, I said that idea can be developed, but I just did it like that.
    2 points
  26. You too? You want to create a server of our favorite MMORPG?! You will finally be able to make your dream come true ! This guide is exclusively compatible with Metin2 Project. You are ready? Gooo! Are you a beginner? I suggest you start by creating a server on your computer How to create à Metin2 private server on virtual machine. Summary FreeBSD Environment (Required) Web Environment (Optional) This part is essential, it allows you to prepare, configure your Metin2 Project environment on your FreeBSD Server. All the steps are necessary for the proper functioning of Metin2 Project. Install FreeBSD Spoiler Prerequisites A dedicated server at the host of your choice: Kimsufi, Scaleway, SoYouStart... Retrieve the IP address of the FreeBSD Server Retrieve the password of the root user or the one that was created Retrieve the SSH connection port if it has not been modified: 22 The latest version of FreeBSD that your host can offer you if you have the choice Ready? Gooo! An installation of FreeBSD differs from one host to another, I suggest you follow the default configuration which is still sufficient. Your host, during the installation may ask you to create a user, other than the root system user. In order to continue, your host must provide you with several information to connect to your FreeBSD Server using PuTTY, the IP address of the FreeBSD Server, the username and password, and the port for the SSH Server. 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! 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 provided by your host. 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 ». Download Server Spoiler Prerequisites Download the latest version of the Metin2 Project Server Ready? Gooo! The archive itself is made up of two archives inside: the Metin2 Project Server Files and the Metin2 Project Database. Extract the archive and keep these archives on your computer. Client Spoiler Prerequisites Download the latest version of the Metin2 Project Client Ready? Gooo! The archive itself is made up of three archives inside: the Metin2 Project Tools, the Metin2 Project Client and the Metin2 Project Source Client. Extract the archive and keep these archives on your computer. Configure Resolv Spoiler Introduction This is the resolver library configuration file used to determine, among other things, which DNS Servers your server will use to communicate with the global network. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: ee /etc/resolv.conf Add the following configuration: nameserver 1.1.1.1 nameserver 8.8.4.4 nameserver 8.8.8.8 nameserver 127.0.0.1 Save using the keyboard combination « CTRL + C » then enter: exit SSH Spoiler Introduction We use SSH to connect to the server with PuTTY from the command line or via WinSCP in SFTP for file transfers for example ... We are going to modify the configuration of SSH to allow the root user to connect to it . It's possible that the configuration of your host is the one already described in this guide, in this case, you can ignore the possible modifications. Did your host give you the root user credentials? You can skip this step. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: ee /etc/ssh/sshd_config Search: #PermitRootLogin no Replace: PermitRootLogin yes Save using the keyboard combination « CTRL + C » then enter: exit The configuration of the SSH Server is finished, we will restart the SSH service to apply the changes, run the following command: service sshd restart Restarting the SSH Service will log out of PuTTY, log back into PuTTY using the root user if you haven't already. PKG Spoiler Introduction PKG is a package manager. You can install packages, that is, programs that you can use under FreeBSD. PKG itself is a program. However, during a recent installation of FreeBSD, the package manager may not be enabled or installed by default. An advantage of PKG is the fact that it automatically installs the dependencies of the programs you want to install! It's possible that the configuration of your host is the one already described in this guide, in this case, you can ignore the possible modifications. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg -y If this tells you: Ignore the mismatch and continue ? [ Y / n ] : Enter then validate: y The package manager is now activated, we will do an update, run the following command: pkg update If this tells you: Ignore the mismatch and continue ? [ Y / n ] : Enter then validate: y Débogage Spoiler Introduction We are going to configure FreeBSD so that when any « CRASH » program generates a kernel dump file so that we can debug them, the file will have the same name as the program and it will have the extension “.CORE”. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: ee /etc/sysctl.conf Add at the end of the file: kern.coredump=1 Save using the keyboard combination « CTRL + C » then enter: exit We will restart your FreeBSD Server, run this command: reboot Restarting the FreeBSD Server will result in you disconnecting from PuTTY, wait a few minutes then reconnect to PuTTY. Install MySQL Spoiler Introduction MySQL is a database manager, it's he who saves all the information relating to your accounts, your characters, inventories... It uses what is called the SQL language. Without him we would be nothing! There are other SQL Servers such as PostgreSQL, Oracle, SQLite, MariaDB... As part of Metin2 Project, the database backs up, stores all data relating to your Metin2 Project Server, accounts, characters, inventories, state of quests... Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y mysql80-server mysql80-client Python Spoiler Introduction Python is an interpreted, multi-paradigm, cross-platform programming language. It promotes structured, functional and object-oriented imperative programming. Python is used on the Metin2 Project to compile the game's quests. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y python27 data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== GMake Spoiler Introduction GMake is software that automatically builds files, often executables, or libraries from basic elements such as source code. It uses files called makefiles which specify how to build the target files. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y gmake data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== MakeDepend Spoiler Introduction MakeDepend is a tool used to generate source file dependencies. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y makedepend DevIL Spoiler Introduction Developer's Image Library (DevIL) is a library for developing applications with very powerful image loading capabilities, easy to learn and use for a developer. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y devil data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== GDB Spoiler Introduction GNU Debugger, also called GDB, is the standard debugger for the GNU Project. It's used to analyze kernel dumps when a program terminates due to an unhandled error. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y gdb data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== LLVM Devel Spoiler Introduction CLang is a compiler for the C, C ++, and Objective-C programming languages. Its low-level interface uses LLVM libraries for compilation. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y llvm-devel data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 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 ». Configure MySQL Spoiler Introduction Once installed, it's necessary to configure MySQL so that it starts automatically when your FreeBSD Server starts up, configure users and access to databases! Ready? Gooo! Connect using PuTTY to your FreeBSD Server. We will configure the automatic start of MySQL when you start your FreeBSD Server, run the following command: sysrc mysql_enable="YES" A final configuration in order to be able to use MySQl, run the following command: ee /usr/local/etc/mysql/my.cnf Search: bind-address = 127.0.0.1 Replace: #bind-address = 127.0.0.1 Save using the keyboard combination « CTRL + C » then enter: exit Let's start MySQL using the following command: service mysql-server start If you get this message: Starting mysql... MySQL is started. Initial setting Run the following command: mysql_secure_installation If you get this message: VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin ? Press y | Y for Yes, any other key for No : Enter: n If you get this message: Using existing password for root... Change the password for root ? ((Press y | Y for Yes, any other key for No) : Enter: y It will ask you for a new password, this is the root user password for MySQL: New password : If you get this message: Remove anonymous users ? (Press y | Y for Yes, any other key for No) : Enter: y If you get this message: Disallow root login remotely ? (Press y | Y for Yes, any other key for No) : Enter: n If you get this message: Remove test database and access to it ? (Press y | Y for Yes, any other key for No) : Enter: y If you get this message: Reload privilege tables now ? (Press y | Y for Yes, any other key for No) : Enter: y MySQL is configured and the password for the root user has been changed. Create the databases We need to create the databases so that your Metin2 Project Server can save the information it needs ... Let's get started! We will first connect to MySQL from the command line: mysql -u root -p If you get this message: Enter password : Enter the password you chose earlier then enter the following commands in the sql interpreter: CREATE DATABASE account; CREATE DATABASE common; CREATE DATABASE player; CREATE DATABASE log; CREATE DATABASE hotbackup; You should get for each run, the following message: Query OK, 1 row effected (0.00 sec) Create users MySQL separates access into two types of users: Local ( Localhost ): A local user can connect to the MySQL Server locally and will not be allowed to connect from outside. A local user who tries to connect from outside will have an error indicating that his access is not enabled. Public ( % / IP ): A public user can connect to the MySQL Server locally and externally. The use of the user type depends on the level of security you want to implement. You can also define an IP from which the account is allowed to connect, beware of dynamic IPs. The wildcard % will accept all IPs. Run this series of commands, you can customize the password for the public user metin2_2014: CREATE USER 'metin2_2014'@'localhost' IDENTIFIED WITH mysql_native_password BY '@METIN2!'; CREATE USER 'metin2_2014'@'%' IDENTIFIED WITH mysql_native_password BY 'CHOOSE_YOUR_PASSWORD'; You should get for each run, the following message: Query OK, 0 rows affected (0.00 sec) Manage permissions You have your databases, your users, yet they have no rights, they can't do anything! Run this series of commands: GRANT ALL PRIVILEGES ON account.* TO 'metin2_2014'@'localhost'; GRANT ALL PRIVILEGES ON common.* TO 'metin2_2014'@'localhost'; GRANT ALL PRIVILEGES ON player.* TO 'metin2_2014'@'localhost'; GRANT ALL PRIVILEGES ON hotbackup.* TO 'metin2_2014'@'localhost'; GRANT ALL PRIVILEGES ON log.* TO 'metin2_2014'@'localhost'; GRANT ALL PRIVILEGES ON account.* TO 'metin2_2014'@'%'; GRANT ALL PRIVILEGES ON common.* TO 'metin2_2014'@'%'; GRANT ALL PRIVILEGES ON player.* TO 'metin2_2014'@'%'; GRANT ALL PRIVILEGES ON hotbackup.* TO 'metin2_2014'@'%'; GRANT ALL PRIVILEGES ON log.* TO 'metin2_2014'@'%'; You should get for each run, the following message: Query OK, 0 rows affected (0.00 sec) Run this command to validate the permissions: FLUSH PRIVILEGES; You should get the following message: Query OK, 0 rows affected (0.00 sec) MySQL configuration is complete, let's quit the sql interpreter: exit; 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. Import Databases Spoiler Introduction The databases are empty, it's necessary to import the default data from the Metin2 Project Server. Ready? Gooo! Importing the databases is simple, you have to connect to your MySQL Server using Navicat then open the databases « ACCOUNT »« COMMON »« PLAYER »« LOG »« HOTBACKUP ». Right click on the database: Select the SQL file to import: Configure Account 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 Ready? Gooo! 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. Install Server Spoiler Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run this command: cd /usr && mkdir m2_project && cd /usr/m2_project The command carries out the following actions: We move our user to the « USR » directory then we create the « M2_PROJECT » folder then we move our user one last time in it. On your computer, you have an archive, you are going to transfer Metin2 Server Project.tar to the /usr/m2_project directory of your FreeBSD Server. Once the transfer is complete, run this command: tar xvf Serveur Metin2 Project.tar Compile Server Spoiler Introduction Metin2 Project needs to be rebuilt in its new environment. Metin2 Project Shell Manager takes care of all manipulations! Ready? Gooo! Run this command: cd /usr/m2_project && sh m2sh.sh Metin2 Project Shell Manager in its full version. Clean Before starting the compilation of the projects, it's necessary to clean the compiled objects. On Metin2 Project Shell Manager, enter: 310 Metin2 Project Shell Manager will perform a complete cleanup of the sources of the Metin2 Project Server. Compile Let's rebuild Metin2 Project, for that, open Metin2 Project Shell Manager: cd /usr/m2_project && sh m2sh.sh You will, compile all the projects, one after the other in this order: 310 309 306 305 304 307 308 303 302 301 Enter one option at a time. 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 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. Start 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 Ready? Gooo! It's time for you to materialize in the virtual and wonderful world of Metin2 Project ! Enjoy the great and beautiful Metin2 Project adventure... This part is optional, if you want to install forum or a website for your Metin2 Project Server, it's necessary to prepare your web environment on your FreeBSD Server. It's essential to have configured your domain name in order to assign it a type A record to the IP address of your FreeBSD Server! If you don't have a domain name, you are wasting your time. Install Apache Spoiler Introduction The free software Apache HTTP Server is an HTTP Server, Apache is an open-source and cross-platform web server. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y apache24 PHP Spoiler Introduction PHP Hypertext Preprocessor, known by its acronym PHP, is a free programming language, mainly used to design dynamic web pages through an HTTP Server, but can also function like any language interpreted locally. PHP is an object-oriented imperative language. It can be easily integrated into HTML. We use PHP with its multiple functions in order to be quiet when designing your websites. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y php74 mod_php74 php74-bcmath php74-bz2 php74-curl php74-dba php74-dom php74-enchant php74-exif php74-extensions php74-fileinfo php74-filter php74-ftp php74-gd php74-gettext php74-gmp php74-imap php74-json php74-ldap php74-lz4 php74-mbstring php74-mysqli php74-odbc php74-opcache php74-openssl php74-pdo php74-pdo_mysql php74-pdo_odbc php74-pdo_pgsql php74-pdo_sqlite php74-pgsql php74-pspell php74-readline php74-session php74-simplexml php74-snmp php74-soap php74-sockets php74-sqlite3 php74-tidy php74-xml php74-xmlreader php74-xmlrpc php74-xmlwriter php74-xsl php74-zip php74-zlib php74-zstd Cerbot Spoiler Introduction Let's Encrypt is a certification authority. This authority provides free certificates for the TLS cryptographic protocol by means of an automated process through Certbot, with SSL certificates you can obtain HTTPS on your website. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: pkg install -y py37-certbot py37-certbot-apache Configure Apache Spoiler Introduction Once installed, it's necessary to configure Apache so that it starts automatically when your FreeBSD Server starts up, configure virtual hosts and general parameters. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: sysrc apache24_enable="YES" Let's activate the Apache modules, run the following command: ee /usr/local/etc/apache24/httpd.conf Search: #Include etc/apache24/extra/httpd-vhosts.conf Replace: Include etc/apache24/extra/httpd-vhosts.conf Search: #LoadModule rewrite_module libexec/apache24/mod_rewrite.so Replace : LoadModule rewrite_module libexec/apache24/mod_rewrite.so Search: #LoadModule ssl_module libexec/apache24/mod_ssl.so Replace: LoadModule ssl_module libexec/apache24/mod_ssl.so Search: #ServerName www.example.com:80 Replace: ServerName 127.0.0.1:80 Save using the keyboard combination « CTRL + C » then enter: exit PHP Spoiler Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command to copy the PHP configuration file: cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini Set up PHP for Apache, run the following command: ee /usr/local/etc/apache24/modules.d/001_mod-php.conf This file is blank, add this: <IfModule dir_module> DirectoryIndex index.php index.html <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> </IfModule> Save using the keyboard combination « CTRL + C » then enter: exit Cerbot Spoiler Introduction We will also enable Certbot for automatic certification of SSL certificates for HTTPS using a routine. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: sysrc weekly_certbot_enable="YES" Add the routine by running the following command: echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | tee -a /etc/crontab > /dev/null Virtual Hosts Spoiler Introduction An important step in the configuration of your Web Server under FreeBSD, the creation of the virtual hosts. Thanks to these it will be possible to manage many websites on the same server, for example you would like to have your main domain for the website and a subdomain for your forum? Ah well, it's possible! It's essential to have configured your domain name in order to assign it a type A record to the IP address of your FreeBSD Server! Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: ee /usr/local/etc/apache24/extra/httpd-vhosts.conf Replace the contents of the file with: <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/www/apache24/data/domain.com" ServerName domain.com ServerAlias www.domain.com ErrorLog "/var/log/httpd-domain-com-error-log" CustomLog "/var/log/httpd-domain-com-access-log" common </VirtualHost> In our configuration we have: ServerAdmin : It corresponds to your email address, it can be displayed if an error occurs on your website DocumentRoot : It corresponds to the root of the website you are creating, modify domain.com by your domain name ServerName : It corresponds to the domain of the website you configured, modify domain.com by your domain name ServerAlias : It corresponds to the alternate domain of the main domain, mainly used to define the www subdomain ErrorLog / CustomLog : These are the error logs and access logs to your web server from a browser, everything is saved If for example you want a subdomain, add this after the first block: <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/www/apache24/data/subdomain.domain.com" ServerName subdomain.domain.com ErrorLog "/var/log/httpd-subdomain-domain-com-error-log" CustomLog "/var/log/httpd-subdomain-domain-com-access-log" common </VirtualHost> In our configuration what changes? DocumentRoot : It corresponds to the root of the website you create, modify subdomain.domain.com by your subdomain name! ServerName : It corresponds to the domain of the website you configured, modify subdomain.domain.com by your subdomain name! Save using the keyboard combination « CTRL + C » then enter: exit We are going to create the directories of our websites according to the domain name: understand that the directories below are the roots of your websites, this is where you will have to install your websites! mkdir /usr/local/www/apache24/data/domain.com mkdir /usr/local/www/apache24/data/subdomain.domain.com Then we will give back what belongs to Apache, its directories: chown -R www:www /usr/local/www/apache24/data Restart Apache: service apache24 restart If you get this message: Performing sanity check on apache24 configuration : Syntax OK Starting apache24... Congratulations... HTTPS Certification Spoiler Introduction HTTPS was invented in order to meet the integrity and confidentiality needs of the data exchanged and especially the authentication of the server. HTTPS is then useful to prevent the theft of information on the website by malicious third parties. When an Internet user visits an unsecured website with his browser, he will see the word unsecured in red in the address bar. This warning could encourage him to fear the website and to leave it to visit another ... It's important to provide your domain name with a security certificate. We will be using Certbot by Let's Encrypt. Let's Encrypt is a certificate authority launched on December 3, 2015. This CA provides free X.509 certificates for the TLS cryptographic protocol through an automated process. Ready? Gooo! Connect using PuTTY to your FreeBSD Server then run the following command: certbot --apache When using Certbot for the first time, you should obtain: Enter email address ( used for urgent renewal and security notices ) ( Enter 'c' to cancel ) : You must enter an email address, Let's Encrypt warns you if a problem occurs with your certificate or its validity. Please read the Terms of Service at [...] order to register with the ACME server [...] ( A ) gree / ( C ) ancel : Enter: a If you get this message: Would you be willing to share your email address [...] and ways to support digital freedom. ( Y ) es / (N ) o : Enter: n If you get this message: Which names would you like to activate HTTPS for ? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 : domain.com 2 : subdomain.domain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and / or spaces, or leave input blank to select all options shown (Enter 'c' to cancel ) : Enter the number corresponding to the domain to be certified: 1 or 2 If you get this message: Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 : No redirect - Make no further changes to the webserver configuration. 2 : Redirect - Make all requests redirect to secure HTTPS access. Choose this for new websites, or if you're confident your website works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [ 1 - 2 ] then [ enter ] ( press 'c' to cancel ) : Indeed, automatic redirection from HTTP to HTTPS is recommended, enter: 2 You must obtain: Obtaining a new certificate Performing the following challenges: http-01 challenge for domain.com Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /usr/local/etc/letsencrypt/live/domain.com/fullchain.pem Your key file has been saved at: /usr/local/etc/letsencrypt/live/domain.com/privkey.pem Your cert will expire on 2099-12-31. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: [Hidden Content] Donating to EFF: [Hidden Content] You must repeat the certification for each domain name. Use World Wide Web Spoiler Introduction The goal is to show you where the root directories of your websites are. Ready? Gooo! In our example, we have created a main domain and a subdomain: domain.com /usr/local/www/apache24/data/domain.com subdomain.domain.com /usr/local/www/apache24/data/subdomain.domain.com You must place there, in these directories: your forum, website ... It's the root document of each of your virtual hosts. The configuration of a forum, of a website being specific to each application, will not be specified in this guide. Made With and
    2 points
  27. It's now available on Metin2 Download Center! M2 Download Center Download Here ( CN ) - Download Here ( DE ) - Download Here ( ES ) - Download Here ( KR ) Download Here ( GR ) - Download Here ( IT ) - Download Here ( NL ) - Download Here ( HU ) Download Here ( PL ) - Download Here ( RO ) - Download Here ( SG ) - Download Here ( US ) Download Here ( AE ) - Download Here ( CZ ) - Download Here ( DK ) - Download Here ( FR ) Download Here ( PA ) - Download Here ( PT ) - Download Here ( RU ) - Download Here ( TR ) Download Here ( BR ) - Download Here ( BETA ) - Download Here ( EN ) - Download Here ( MX )
    2 points
  28. M2 Download Center Download Here ( Internal ) Hi everyone, Maybe just in my country, but it looks so many people started using this annoying PM flooder which cause a buffer overflow in the target client. It can be fixed easily on server-side, so let's do it: Add these functions as public to char.h: void ClearPMCounter(void) { m_iPMCounter = 0; } void IncreasePMCounter(void) { m_iPMCounter++; } void SetLastPMPulse(void); int GetPMCounter(void) const { return m_iPMCounter; } int GetLastPMPulse(void) const { return m_iLastPMPulse; } Add these to char.h too, but as protected: int m_iLastPMPulse; int m_iPMCounter; Add this function to char.cpp: void CHARACTER::SetLastPMPulse(void) { m_iLastPMPulse = thecore_pulse() + 25; } Still in char.cpp search for the Initialize and add these to the function: m_iLastPMPulse = 0; m_iPMCounter = 0; Now navigate to the Whisper function in input_main.cpp and add this after the iExtraLen variable checking at the top: if (ch->GetLastPMPulse() < thecore_pulse()) ch->ClearPMCounter(); if (ch->GetPMCounter() > 3 && ch->GetLastPMPulse() > thecore_pulse()) { ch->GetDesc()->SetPhase(PHASE_CLOSE); return -1; } Search for this still in the Whisper function: if (pkChr == ch) return (iExtraLen); Add these after that: ch->IncreasePMCounter(); ch->SetLastPMPulse();
    2 points
  29. This post is obsolete now, please use the Wiki instead from now on: [Hidden Content]
    2 points
  30. M2 Download Center Download Here ( Internal ) Heys guys, I just realized that so many of you still using that vdi from 2014 with an old bsd and an old gcc that was not even c++11 compatible. So that I just created a new image with a fresh FreeBSD (12.1) having gcc 9 and without an Extern directory (all externals are installed from pkg repo). I put on some (I think) unmodified sources that can be compiled on it but you can upload your own files there. I hope it will make many of yours life easier! Download: [Hidden Content]
    1 point
  31. 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
    1 point
  32. M2 Download Center Download Here ( Internal ) Hello guys.. So much people got problem with this system then i do FULL TuT exclusive for metin2dev All is tested and all works TuT included in all FILES.. New Link: Pass: When you find some bug post it here.. I will try to fix it.. Have Fun //EnZi EDITED: #New Link UPDATE cmd_general.cpp - Added some new code char_battle.cpp - Added some new code ProtoReader.cpp - Added some new code questlua_pc - Repaired code item_proto - Query for navicat Quest added UP LINK UPDATED fixed quest: [Hidden Content]
    1 point
  33. M2 Download Center Download Here ( Internal )
    1 point
  34. M2 Download Center Download Here ( Internal ) Download Here ( Last Version ) Author: Ionuț ( me ) Size: 3.67 MB Version: v2.12 Type: Open-Source Features: Modern design with elements in bootstrap (v4 alpha 3), admin panel (currently in beta), member panel (currently basic systems), update system, registration, general settings in the admin panel, offline system (if the server is offline, notifications will be displayed, also the last copy of the top site), database of news is sqlite, settings files are in json. Language: English & Romanian Preview: Download: [Hidden Content] Documentation : [Hidden Content]/documentation/ Install: Just edit config.php with your datas. CMS is not completely. It will be updated. I expect criticism / opinions / advice constructive. To report an error: [Hidden Content] Tutorial: how to add login with Google reCAPTCHA: [Hidden Content]
    1 point
  35. 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.
    1 point
  36. M2 Download Center Download Here ( Internal ) Hello, As said in the title, here are the Granny 2.11.8 Exporters for 3ds Max 2018. I'm still trying to find for Maya, but for the time being I only have this. Download: [Hidden Content] VirusTotal: [Hidden Content] The installation is really obvious as of I won't give any support, it's just drag and drop in the installation folder. I'll also don't provide any 3ds Max 2018 download link, as it's still available on Autodesk website, just buy it, use education account or crack it. This might also not be very useful for some 3D Artists since it needs the client to also have Granny 2.11.8 (normal clients use 2.4 and almost everyone already use 2.9, to upgrade to 2.11.8 is just upgrade the lib, header file and dll). Credits: Found it on some Arabic forum non-metin2 related.
    1 point
  37. M2 Download Center Download Here ( Internal ) (Video at the end) Lockpicking is the new system which allows you to train special ability. This ability upgrade your skill of opening new boxes which are on maps(like npc). Every level gives higher chance to open box and probability to get more rewards. To train Lockpicking skill players have to read special books. You can set the level from which players can use this system. Maximum level of skill is 40, but it's configurable. Player can check how many boxes found. System support multilang servers. Missions Additionaly you will get special missions for this sytem, you can easily configure them or add new ones(just add new item to the table). After finished mission player receive reward directly in Quest Scroll. Configuration ItemShop Also you can earn some money from itemshop by this system : ) Magical key rises you chance to open box to 100%, but count of items which you can get from box still depends on skill level. The Key can be used only 10 times. Download & Scan [Hidden Content] [Hidden Content]
    1 point
  38. M2 Download Center Download Here ( Internal ) Hey. With this you can 12 Inventory Sites can change their freely used. A maximum of 65k Slot's are used. - Stands for Search and must be replaced with the + Game Source: Now the Client Source Path Client Source: So for me to use 12 slot's Image: Should any questions or problems you can give you welcome to contact. Even if you find bug's tells me this with me. Ps: The whole has been tested with no dragon stone alchemy should nevertheless go. The Python Part I hang on. Virustotal: [Hidden Content] Download Python
    1 point
  39. uitooltip.py ITEM_TYPE_UNIQUE: COSTUME_TYPE_MOUNT with TIMER_BASED_ON_WEAR (you can edit/extend it to other items...) WEAPON_QUIVER: Do not copy paste, use it for compare. Also the code maybe ugly because I did not intend to share.
    1 point
  40. Nice, thanks for sharing!
    1 point
  41. @TheHypnosis No, there are no known bug at the moment. However I don't say it is completly bug-free. Report bugs here and I'll keep fixing them as I can. I've been tested it for several hours and still doing it. Ofc I can't hire a professional software tester team for a free project Base src from Mali, here and here you can find more info about the extern side.
    1 point
  42. Hello! This is a site where you can find an interactive database objects in Metin2. I know there are already so, but this list contains the list of objects to date and in addition has been added search function object name. Link: [Hidden Content] I hope it will help you! Update[19.05.2021]: The site has been updated. (2727 items) All the official items that are currently present have been added. I have also changed the theme of the site. Objects can be found in 16 languages.
    1 point
  43. Help problem emoji text
    1 point
  44. M2 Download Center Download Here ( Internal ) Hey, Font Awesome is a font and icon tool based on CSS, LESS, and SASS. Official link to find your icons: FontAwesome It allows you to add vector icons to your website. Enjoy Sincerly, ASIKOO
    1 point
  45. Hi Devs Google translate Here's a tutorial to automatically clear all your server logs. Create crontab user root crontab -e click "insert" to keyboard and paste * * * * * /bin/sh /usr/home/etcetcetc/game/clear.sh With this command you will clear your log in one minute. Example time crontab: and press ESC and : and wq = :wq and press enter Example screen: No need to restart ok.. Obs: command List crontab: # crontab -l edit crontab: # crontab -e comment crontab (stop crontab) : comment (#) #* * * * * /bin/sh /usr/home/etcetcetc/game/clear.sh Download my script clear.sh edit the files to your directory.. Credit: ByLost Enjoy By
    1 point
  46. M2 Download Center Download Here ( Internal )
    1 point
  47. For libs: [Hidden Content]
    1 point
  48. M2 Download Center Download Here ( Internal ) Hello guys, here's free logo for you.
    1 point
  49. What I don't understand is: Why do so many people copy the source to /usr/src ? This directory is used for the FreeBSD source code and normally you don't put your own stuff there.
    1 point
×
×
  • 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.