Jump to content

Leaderboard

Popular Content

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

  1. 16 points
  2. 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
  3. Serverfile Updated! Note: Starting 2021.08.01. I dropped version numbers, instead I'm using timestamps (date). 2021.08.01: Fixed some translate.lua lines (cz, tr) and removed all unnecessary starting spaces from every translate.lua in which it had. (Example: " something" --> "something") Fixed Channel4's port numbers in serverside CONFIG files. Fixed some EXCHANGE_TITLE in some locale_game.txt what blocked the trade window opening. Uploading right now. Please give a couple minutes.
    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. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Hello, [Hidden Content] You have a video example on that I made. You need to make the encoding match. You can use Bandi Video Converter. Result:
    4 points
  6. Maybe someone can make use of it: Sourcechanges:
    4 points
  7. M2 Download Center Download Here ( Internal 2.9 ) Download Here ( Last Release ) This is an archiver I've created, and it looks quite stable so far. The PackMakerLite (PML) supports type 0-1-2-3-4-5-6. As a summarize, the metin2 types are handled like this: Type 0 - only storage (no encryption/compression; it can be read fully from the .epk) Type 1 - compressed - lzo(file) Type 2 - compressed and encrypted - xtea(lzo(file)) Type 3 - encrypted with Panama - you must save an .iv key server-side in the panama/ folder. (content readable only after auth phase) The official used it only for patch2. Type 4 - encrypted with a mix of ciphers (cshybridcrypt) - you must save a .dat key server-side in the package/ folder. (content readable only after auth phase) Practically all the metin2_patch files. Type 5 - like type 4, but a server-side map/<map_name> is also provided. (content readable only after accessing the <map_name> map as a player) The official used it only for the catacomb data. Type 6 - compressed and encrypted - xtea(snappy(file)) Usage: Its settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json: You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files: Remove "--nolog" from the .bat files if you want to see the logs again. Command-line options get overwritten by JSON config options. Last but not least: since the client handles all the filenames in lowercase, this tools automatically converts them as well. Thanks also to: blackdragonx61 / Mali - type4-5 extract code / type 6 compress code metin2team - type6 extract code By martysama0134
    3 points
  8. M2 Download Center Download Here ( Internal 1001 ) Download Here ( Internal 1000 ) Hey M2DEV Today i will show you my new tool! Open gr2 file, use double click for input or change path, press enter. After changes go to File->Save or Save as.. Update: 1.0.0.1 1. Detect and show File Granny Tag 2. Now you have the opportunity to choose the output version Granny. [Hidden Content]
    3 points
  9. M2 Download Center Download Here ( Internal ) Hello, I'll show you how to import gr2 file. If I get 30 react I am thinking of sharing the plugin file. grnreader.exe > [Hidden Content] virustotal > [Hidden Content]
    3 points
  10. M2 Download Center Download Here ( Internal ) This guide will walk you through each step of installing the necessary daemons for a Metin2 server on FreeBSD. Asking for help setting up Metin2 on the official FreeBSD forums is not permitted, I suggest if you have issues to ask in this forum only. You may not need to install cURL, it depends on whether or not you'll host your website on the same server and use things that require cURL (such as automatic paypal transactions). It's recommended to host your website on a separate web server and not share the IP with anyone then run it through CloudFlare. A guide will be posted soon in these forums on how to run your website through CloudFlare while preventing CloudFlare IP resolvers from functioning. However, if you do run your website on another server I would recommend hosting it in the same datacenter because you'll need to use Remote MYSQL to access your database. - For sake of simplicity I'll be using "ee editor" for this guide. Most new people don't like vi anyway. If you're already familiar with vi, feel free to use that to edit text inside files instead. - To transfer files to and from your server, use WinSCP. - To enter commands into your server, use PuTTy. Please note that when the system asks you for a password in PuTTy you won't see it as you type it on the screen, be precise! - Pressing the TAB key in PuTTy will auto-complete as much as possible in the directory you're in. Downloads Libs: [Hidden Content] 1. Updating Ports portsnap fetch extract portsnap update 2. Installing Python 2.7 cd /usr/ports/lang/python27 make -DBATCH install clean pro tip: Use the "-DBATCH" flag for a default installation of the port. Skip all those annoying prompts during installation. 3. Standard C++ Libraries fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.1-RELEASE/lib32.txz tar Jxpvf lib32.txz -C / rm lib32.txz Unrar "Libs.rar" and put the files in the "/usr/lib32" directory. 4. Compat7x Because Metin2 was originally meant to be run on FreeBSD 7, we need this so that it's compatible with FreeBSD 9. cd /usr/ports/misc/compat7x && make -DBATCH install clean pkg_add -r compat7x-amd64 5. Install & Configure MySQL 5.6 server cd /usr/ports/databases/mysql56-server make BUILD_OPTIMIZED=yes BUILD_STATIC=yes make WITH_XCHARSET=all install clean Now we make it start on each startup of the system. ee /etc/rc.conf Add a new line: mysql_enable="YES" Press ESC then save and close the file. service mysql-server start /usr/local/bin/mysqladmin -uroot password 'enterpassword' pro tip: "enterpassword" should be the password you choose, don't use "enterpassword" as your password. A long string of lower case and capital letters and numbers is the safest bet. Don't use words that can be found in a dictionary. Don't use passwords which are the same as other passwords of yours. You may not need to do this, but when I got an OVH server it messed up the installation of mysql (on 9.2). If you get an error about the mysql user account with the step above, just do this: pwd_mkdb -p /etc/master.passwd chown -R mysql /var/db/mysql && chgrp -R mysql /var/db/mysql Then repeat the step. 6. Adding your server files and Metin2 Database Extract your game.tar.gz containing all the Metin2 server files somewhere in your server. This is all you have to do to extract a .tar.gz file: tar -zxvf filename.tar.gz You should have your metin2 database inside of a tarball (.tar.gz file). For structure, it doesn't really matter as long as once you extract your tarball on your server it follows this file hierarchy: Now you should change the group and ownership of some files for your database: service mysql-server stop chown -R mysql /var/db/mysql && chgrp -R mysql /var/db/mysql service mysql-server start Setup an account for you to login to the database via Navicat and an account for your game cores to interact with your database using. For this example I'll use the username "rumor" for my account and "metin2" for the game core's account. Every password in this example will be "password" but please DO NOT use this as your password! If you have a static IP address and wish to restrict access to the database only to your IP, change the "%" sign to your IP. The "%" sign indicates that any IP address is allowed to connect to the database using the specified credentials. mysql -p Now enter the password you set with mysqladmin earlier... and you will see this prompt: mysql> This is where we set the actual permissions for the accounts up. GRANT ALL PRIVILEGES ON *.* TO 'rumor'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'metin2'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; quit pro tip: remember (or write down) this information because you will need it later. Setup your CONFIG files under each channel folder and the "auth" folder. All of these are found inside the Metin2 server files. PLAYER_SQL: localhost metin2 password player COMMON_SQL: localhost metin2 password common LOG_SQL: localhost metin2 password log The conf.txt file looks a little bit different and it's found in the "db" folder of your Metin2 server files. SQL_ACCOUNT = "localhost account metin2 password 0" SQL_PLAYER = "localhost player metin2 password 0" SQL_COMMON = "localhost common metin2 password 0" SQL_HOTBACKUP = "localhost hotbackup metin2 password 0" ~~~~ STOP HERE IF YOU'RE RUNNING YOUR WEB SERVER SOMEWHERE ELSE ~~~~ 7. Setting up web server for website and/or patcher Install nginx: cd /usr/ports/www/nginx make install clean Make sure these are selected with space bar: [X] HTTP_MODULE Enable HTTP module [X] HTTP_ADDITION_MODULE Enable http_addition module [X] HTTP_CACHE_MODULE Enable http_cache module [X] HTTP_GEOIP_MODULE Enable http_geoip module [X] HTTP_GZIP_STATIC_MODULE Enable http_gzip_static module [X] HTTP_IMAGE_FILTER_MODULE Enable http_image_filter module [x] HTTP_PERL_MODULE Enable http_perl module [X] HTTP_REALIP_MODULE Enable http_realip module [X] HTTP_REWRITE_MODULE Enable http_rewrite module [X] HTTP_STATUS_MODULE Enable http_stub_status module Press "Enter" when ready to continue. Install libtool cd /usr/ports/devel/libtool make install clean Install php5 cd /usr/ports/lang/php5 make config Make sure the following is selected with space bar then press "Enter": [X] FPM Build FPM version (experimental) Leave everything else default. then do this: make install clean ~~~~ If you need cURL support then do this, if not then skip this step: cd /usr/ports/lang/php5-extensions make config Make sure that the "CURL Support" is selected then press "Enter". Then do the installation and clean the directory: make -DBATCH install clean ~~~~ Time to configure your php.ini file... cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini Edit /usr/local/etc/php.ini in WinSCP using Notepad++. Firstly, set your "date.timezone" to the appropriate one. Choose from this list: [Hidden Content] Next, if you have something that needs to run large MYSQL queries you may run into some issues. Some website packages also can cause these problems. The issue is with memory usage. For security reasons there are limitations set on how much memory php is allowed to use. I suggest only modifying this IF you have problems loading memory-intensive pages. Just try to raise it a bit until it works, don't raise it to an excessively high number. I had to set mine to "512M" to make my queries work in my patcher. It can be set by just inputting numbers and they will be recognized as bytes, or you could use K, M, or G. memory_limit = 512M Installation of php-mysql5: cd /usr/ports/databases/php5-mysql make -DBATCH install clean If you've gotten this far, congratulations.. you're almost done! You need to create a folder for your website like this: mkdir /usr/local/www/nginx/domain.com Set the owner and permissions: chown www:www /usr/local/www/nginx/domain.com chmod 755 /usr/local/www/nginx/domain.com Customize this file to your needs and upload it to /usr/local/etc/nginx: If you're using cloudflare, uncomment the lines 38-57 by removing the "#". The reason for this is to ensure you get the real user IP in your logs rather than cloudflare's IP. If you want to allow directory listing.. ie: [url=[Hidden Content] to present a visitor with a list of files they can access/download then uncomment lines 63 and 73. You MUST change the domain name to your own! Now you need to enable startup of php-fpm and nginx whenever your server is booted: ee /etc/rc.conf Add these lines: php_fpm_enable="YES" nginx_enable="YES" Start your services: service php-fpm start service nginx start Upload your website files to /usr/local/www/nginx/domain.com
    3 points
  11. i like it when everything is neat and tidy. we are on metin2dev and not on turkmmo
    3 points
  12. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Everything works fine, just add a part of "python" client, so that users change language with a button, i was lazy to do it. [Hidden Content] - The system saves one language per account. - It's capable of translating quest, client, etc. - The system takes the language from the client's mylang.cfg file and save on DB of this account in the client. The guide simply focuses on looking for DEFINE: ENABLE_MULTILANGUAGE So you can see how I placed it.
    2 points
  13. M2 Download Center Download Here ( Internal ) Hello, Here is the translation of translate.lua file (about 95%) Language available (and tested): Missing language: Translate AIO + Quest GF
    2 points
  14. 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]
    2 points
  15. 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
    2 points
  16. 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
  17. M2 Download Center Download Here ( Github Backup ) - Download Here ( GitHub ) Download Here ( VM 9.2 ) or Download Here ( VM 12 ) Use this source: [Hidden Content] or [Hidden Content]
    2 points
  18. 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
  19. 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
  20. 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
  21. M2 Download Center Download Here ( Internal ) I am proud to release exclusively for metin2dev -with the blessing from its author Tim Niederhausen- the latest version of the original FileArchiver command line tool, which is now divided into two Windows executables: FileArchiver_Eterpack (r3869) This command line tool can pack and unpack EterPack (epk) files. Types 0, 1, 2 and 3 are supported for the packing function. Parameters are configured through xml files: FileArchiver_Eterpack.exe rootpack.xml Optionally you can drag and drop the xml file over FileArchiver_Eterpack.exe in Windows Vista and higher. Unpacking Example XML: unpack root.epk to the folder root_unpacked. ArchivePath is the path to the packed file (without extension) and OutputPath is the folder where files should be written. <ScriptFile> <ExtractEterPack ArchivePath="root" OutputPath="root_unpacked/" CreateXml="No" /> </ScriptFile> Example XML: unpack a series of epk files, creating a xml file that we can use to pack them back later with FA. CreateXml and XmlPath elements are self explanatory here. <ScriptFile> <ExtractEterPack ArchivePath="yt2/pack/uiloading" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="uiloading_pack.xml" /> <ExtractEterPack ArchivePath="yt2/pack/etc" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="etc_pack.xml" /> <ExtractEterPack ArchivePath="yt2/pack/uiscript" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="uiscript_pack.xml" /> </ScriptFile> Packing Example XML: Create uiloading.epk with Type 2 (LZO packed and XTEA key); note how ArchivePath is the path to write the packed file, ArchivedPath is the absolute path of each file in the Metin2 virtual filesystem, while CDATA is the actual location of the file in our PC (relative or absolute) <ScriptFile> <CreateEterPack ArchivePath="../bin/pack/uiloading"> <File ArchivedPath="d:/ymir work/uiloading/loading0.jpg" Type="2"><![CDATA[uiloading/loading0.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading1.jpg" Type="2"><![CDATA[uiloading/loading1.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading2.jpg" Type="2"><![CDATA[uiloading/loading2.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading3.jpg" Type="2"><![CDATA[uiloading/loading3.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading4.jpg" Type="2"><![CDATA[uiloading/loading4.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading5.jpg" Type="2"><![CDATA[uiloading/loading5.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading6.jpg" Type="2"><![CDATA[uiloading/loading6.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading7.jpg" Type="2"><![CDATA[uiloading/loading7.jpg]]></File> </CreateEterPack> </ScriptFile> Example XML: Create a Type 3 (Panama) file. IvPath contains the path to a 32 byte file that will be used as key. Obviously, you should not share this file. This encryption requires a server part which is explained below. <ScriptFile> <CreateEterPack ArchivePath="../bin/pack/metin2_mypatch" IvPath="iv/mypatch.iv"> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1.dds" Type="3"><![CDATA[pc/assassin/assassin_5_1.dds]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_01.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_01.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_02.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_02.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_03.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_03.gr2]]></File> </CreateEterPack> </ScriptFile> Panama encryption: serverside setup Once you have your Panama encrypted packs, you need to upload the keys to auth/panama along with a text file called panama.lst containing a list of files to be decrypted with their respective key file, separated by tabs. Example panama.lst file: pack/mypatch mypatch.iv pack/terrainmaps terrainmaps.iv pack/tree tree.iv Caveats: you can not encrypt the root with panama. Also, if a pack encrypted with panama contains armors or hairstyles, these may not appear in the character selection screen. FileArchiver_Proto (r2806) This tool also takes an xml file as parameter and is intended to read and write clientside item_proto and mob_proto files. Example XML: Read a clientside, packed item_proto and write it to to a xml file <ScriptFile> <ReadItemProto ItemProtoPath="item_proto" OutputPath="item_proto.xml" /> </ScriptFile> Example XML: Write back, once edited, our XML file as a packed item_proto file. <ScriptFile> <WriteItemProto ItemProtoPath="item_proto" InputPath="item_proto.xml" /> </ScriptFile> Now for the mob_proto (Only use the Proto archiver for this one!!!): To extract it from the client use this XML <ScriptFile> <mob_proto_extract path="mob_proto" output="mob_proto.xml" /> </ScriptFile> To pack it back use this one: <ScriptFile> <mob_proto_create path="mob_proto.xml" output="mob_proto_edited" /> </ScriptFile> For questions and comments, you can post in this same thread.
    2 points
  22. M2 Download Center Download Here ( Google Drive ) Download Here ( Internal ) I made a collection of official login, loading screens and wallpapers. There are over 100 picture, here is a quick preview: Don't worry, you will find categorized folders at the link, not in bulk. I may extend it in the future since there are more, mostly newer images. Regards, TMP4
    2 points
  23. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Offline Shop - Premium Private Shop System Hi, due to lack of time, I hadn't shared, but ¡Hey!, I'm here and one more contribution. The Official Servers have an Offline for few months ago, so I took on the task of making a similar one, It's not like Official Servers in a some parts of code I think, it does occupy designs and other things but in some issues it's different, but I used the rules that they use in terms of encoding. I hope you like it, I tried that the Offline didn't occupy so many SQL sequences to minimize the load of SQL injections for the server and uses the same methods of the store and stores, don't create new files so that you can observe it. I take this topic to indicate that I don't sell my things because some persons always end up filtering them and it makes me very lazy to think that, I'm selling and providing kind support to good people so that a bad one arrives and simply ends all that, I don't usually give support because I don't received anything... in Yohara's level system some people sent me a message to indicate that there was an error and it was always an error that they installed it wrong, look correctly at the guide and once for real believe that I omitted something in the guide, you can contact me and tell me to fix it, but if it's an installation error and I must install the system for you, I will charge you, I like to help, but I give you a guide so that it is only corrected what I omitted. If you need me to connect it to your code or to add extra functions, I will still charge you, it's not much, it will simply be at your discretion and it will be a voluntary donation for me and my time, you will value how much you give me, it can be 1 EUR, 2 EUR, 3 EUR, 5 EUR I don't know (So I hope you make an effort, I already gave you the most complicated part, is to copy and paste code already done, including other parts for example like Safebox in Safebox part?), Some people were nice and some were not, so I decided to stop placing the rest of Yohara's patches for a few time. I hope you like this, install, test and contact me if you detect an error, I already looked for and corrected everything I observed. About memory leak - Doesn't have, I think . Use WJ_ENABLE_TRADABLE_ICON (public system). The default code in Python is Safebox to avoid code differences. Among other things. I use TRANSMUTATION like TRANSMUTATION, change it to Changelook, as I indicated in some parts of the guide where to change. # Visual Parts You can download the patches from the Official Servers in: Gyazo: [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] GitHub: [Hidden Content]
    2 points
  24. M2 Download Center Download Here ( Internal ) Download Here ( GitHub )
    2 points
  25. 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
  26. 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
  27. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Hi everyone, in my free time I'm trying to upgrade the mainline to most recently webzen releases. This is the Mythic Class of DS, enjoy. [Hidden Content] In order to use it as Webzen does, you need to have implemented:
    2 points
  28. 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]
    2 points
  29. M2 Download Center Download Here ( Internal ) 3dsMax 2011 + Activator: Here Plugins GR2 for 3dsmax 2011: Here
    2 points
  30. M2 Download Center Download Here ( Internal ) With this tool you can view the Metin2 Models in the .gr2 Format. It´s an easy to use tool and a must have for every server owner or client modder.
    2 points
  31. M2 Download Center Download Here ( Internal ) Hi everyone, In this thread I will explain all console commands in the client: exit - Force close the client mvol - Change the music volume between 0 - 10 svol - Change the sound volume between 0 - 10 snds - Change the volume of the interactive sounds (mobs, hit etc...) between 0 - 200 asnds - Change the volume of the ambience between 0 - 200 mspd - Change the moving speed between 0 - 1100 pwd - Show the current folder path (D:ymir work) ls - Show the folders in D:ymir work shadow - Change the shadow level between 0 - 5 splat - Set the rendering distance between the character and the ambience 0 - ∞ distance - Change the view distance between 0 - 4 bgloading - This function is disabled in the binary! transtree - Enable or disable the transparency of the trees 0 - 1 cd - CD to directory, like in bat files (cd ..) up - Go up in the folder structure (D:ymir work) lsd - List all directories on the partition lsf - List all files on the partition lse - Show the path of the effects (D:ymir workeffect) collision - highlight the objects, monsters, npcs, players 0 - 1 colli - Equal with the collision function without argument, turn on/off the highlighting disconnect - Unfinished function! autorot - Set the rotation moving speed of the camera while pressing the A/D keys 0 - ∞ pickc - Show char informations, isRegistered, isAlive, isDead infoc - Information of another thing, usage: infoc <VID> regchre - Register new effect on the char, usage: regchre <effectType> and <effectFilename> setchra - Set character effect, usage: setchra <effectType> <Visibility 0 or 1> emoticon - Set emotion effect over the character, usage: emotion <number of the emoticon> perfinfo - Show performance informations (?) reload_locale - Reload the locale re - Reload uiGuild and uiInventory cooltime - Disable or enable the skills cooltime hidecursor - Hide the cursor showcursor - Show the cursor warp - Warp to x-y position web - Pop out a web browser hideui - Hide the user interface showui - Show the user interface setcspd - Change the camera moving speed 0 - ∞ savecmr - Export the current camera settings to the client folder, usage: savecmr <filename> loadcmr - Import camera settings, usage: loadcmr <filename in the client folder> setdefcmr - Set to default the camera settings setsight - Change the sight 0 - 100 setcombotype - Set the level of the combo, the server will kick you after few seconds because of combo hack check trans - Change the empire language converting, you can understand all empires without a ring 0 - 1 Rendering options: setrmadd setrmmod setrmaddrgb setrmmodrgb setspec restorerm If you have any question or suggestion please just reply to this topic. Kind Regards, Sanchez
    2 points
  32. M2 Download Center Download Here ( Internal ) [Hidden Content] virustotal: [Hidden Content]
    2 points
  33. M2 Download Center Download Here ( Internal ) I think the most people seen that... [Hidden Content] But no everybody knows how to set mp4 background... In the rar are 50 jpg images.. so u can make animation background via ani_image in python... [Hidden Content]
    2 points
  34. M2 Download Center Download Here ( Internal ) Here is the translation of locale_string.txt file in 14 languages Languages: cz de dk en es fr hu it nl pl pt ro ru tr Link: Download
    2 points
  35. 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.
    2 points
  36. M2 Download Center Download Here ( Internal ) Video at 1:15 Download
    2 points
  37. Download Metin2 Download Hi, I did not find a share with the Sources of Metin2... I share the sources with you today ! Kraizy sources with all branches of development. External Link : Mega or Go Sincerly, ASIKOO
    2 points
  38. It gives a connection error when the language is changed to Turkish. I am getting the same error as the friend named "asanae123". Edit: This is missing on line 1150 of the translate_TR.lua file but I still keep getting the error. TR -> gameforge.flame_dungeon._640_notice = "%s grubundan [ENTER], Razador'u öldürdü! " ENG -> gameforge.flame_dungeon._640_notice = "The group from %s has killed the Razador [ENTER]! " When I fix this, I see that it gives an error on line 1. 1st Line -> exportTestForCharset = "üöäÜÖÄß " Edit 2: The problem was simply solved. Bkz: [Hidden Content] VirusTotal: [Hidden Content] Good day. Edit 3: There is a new problem. When 4 CH is activated, 3 CH is activated. 4. CH does not appear to be active. Example: 4CH "..."
    2 points
  39. [Hidden Content] this one is from invoice client 2013.
    2 points
  40. M2 Download Center Download Here ( Internal ) index file lost Good afternoon guys, As far as I know there is no available up to date client at the moment, so it's finally time to release one. Can I modify the root? It have .py files? Yes, you can modify it without any problems. Is it contains the updates from the last few weeks? Yes, everything till today. Can I unpack the patches or they are archived with type 4? Every patch has been repacked with type 0-1-2 without any modifications. What archiver should I use? It depends on you, but you can use the r3869/r2806 by Tim, which is available on this board. Is the client have any modifications? No, I just had to modify some lines in the root to get it work with the binary. Is there any way to use again the "pong"? Yes! The client contains 2 binary and the secondary one support it. (Please note: Without the modification of the (40250)game file the secondary binary will not work) metin2client_without_pong.exe metin2client_with_pong.exe Is the binary use Python 2.7? Sure, it's using 2.7. Is the the client have any known bug? I tested many time the client and I didn't found anything. Please let me know if you found an issue. I don't trust you. Can you prepare a VirusTotal? I can't. The size of the client is way too big for VT, but you can find the results of the binaries on pastebin. Download: PASTEBIN
    2 points
  41. M2 Download Center Download Here ( Internal ) // If you use my special storage, and ofc if you want add "ACMD(do_sort_special_storage);" too. ^ //////////// CMD.CPP //////////// Search : ACMD(do_stun); Add after : #ifdef ENABLE_SORT_INVENTORY ACMD(do_sort_items); ACMD(do_sort_special_storage); #endif Search: { "notice", do_notice, 0, POS_DEAD, GM_LOW_WIZARD }, Add after : #ifdef ENABLE_SORT_INVENTORY { "click_sort_items", do_sort_items, 0, POS_DEAD, GM_PLAYER }, { "click_sort_special_storage", do_sort_special_storage, 0, POS_DEAD, GM_PLAYER }, #endif //////////// CMD_GNERAL.CPP //////////// ADD THIS : #ifdef ENABLE_SORT_INVENTORY ACMD (do_sort_items) { if (ch->IsDead() || ch->GetExchange() || ch->IsShop() || ch->IsOpenSafebox() || ch->IsCubeOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sort your inventory with those windows open.")); return; } int lastSortInventoryPulse = ch->GetSortInventoryPulse(); int currentPulse = thecore_pulse(); if (lastSortInventoryPulse > currentPulse) { int deltaInSeconds = ((lastSortInventoryPulse / PASSES_PER_SEC(1)) - (currentPulse / PASSES_PER_SEC(1))); int minutes = deltaInSeconds / 60; int seconds = (deltaInSeconds - (minutes * 60)); return; } for (int i = 0; i < INVENTORY_MAX_NUM; ++i) { LPITEM item = ch->GetInventoryItem(i); if(!item) continue; if(item->isLocked()) continue; if(item->GetCount() == g_bItemCountLimit) continue; if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK)) { for (int j = i; j < INVENTORY_MAX_NUM; ++j) { LPITEM item2 = ch->GetInventoryItem(j); if(!item2) continue; if(item2->isLocked()) continue; if (item2->GetVnum() == item->GetVnum()) { bool bStopSockets = false; for (int k = 0; k < ITEM_SOCKET_MAX_NUM; ++k) { if (item2->GetSocket(k) != item->GetSocket(k)) { bStopSockets = true; break; } } if(bStopSockets) continue; BYTE bAddCount = MIN(g_bItemCountLimit - item->GetCount(), item2->GetCount()); item->SetCount(item->GetCount() + bAddCount); item2->SetCount(item2->GetCount() - bAddCount); continue; } } } } ch->SetNextSortInventoryPulse(thecore_pulse() + PASSES_PER_SEC(60)); } ACMD (do_sort_special_storage) { if (ch->IsDead() || ch->GetExchange() || ch->IsShop() || ch->IsOpenSafebox() || ch->IsCubeOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sort your inventory with those windows open.")); return; } int lastSortSpecialStoragePulse = ch->GetSortSpecialStoragePulse(); int currentPulse = thecore_pulse(); if (lastSortSpecialStoragePulse > currentPulse) { int deltaInSeconds = ((lastSortSpecialStoragePulse / PASSES_PER_SEC(1)) - (currentPulse / PASSES_PER_SEC(1))); int minutes = deltaInSeconds / 60; int seconds = (deltaInSeconds - (minutes * 60)); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can sort your inventory again in %02d seconds."), seconds); return; } for (int m = 0; m < 3; m++) { for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i) { LPITEM item; switch(m) { case 0: item = ch->GetUpgradeInventoryItem(i); break; case 1: item = ch->GetBookInventoryItem(i); break; case 2: item = ch->GetStoneInventoryItem(i); break; default: item = ch->GetUpgradeInventoryItem(i); break; } if(!item) continue; if(item->isLocked()) continue; if(item->GetCount() == g_bItemCountLimit) continue; if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK)) { for (int j = i; j < SPECIAL_INVENTORY_MAX_NUM; ++j) { LPITEM item2; switch(m) { case 0: item2 = ch->GetUpgradeInventoryItem(j); break; case 1: item2 = ch->GetBookInventoryItem(j); break; case 2: item2 = ch->GetStoneInventoryItem(j); break; default: item2 = ch->GetUpgradeInventoryItem(j); break; } if(!item2) continue; if(item2->isLocked()) continue; if (item2->GetVnum() == item->GetVnum()) { bool bStopSockets = false; for (int k = 0; k < ITEM_SOCKET_MAX_NUM; ++k) { if (item2->GetSocket(k) != item->GetSocket(k)) { bStopSockets = true; break; } } if(bStopSockets) continue; BYTE bAddCount = MIN(g_bItemCountLimit - item->GetCount(), item2->GetCount()); item->SetCount(item->GetCount() + bAddCount); item2->SetCount(item2->GetCount() - bAddCount); continue; } } } } } ch->SetNextSortSpecialStoragePulse(thecore_pulse() + PASSES_PER_SEC(60)); } #endif //////////// char.cpp //////////// Search : m_iSyncHackCount = 0; Add after: #ifdef ENABLE_SORT_INVENTORY m_sortInventoryPulse = 0; m_sortSpecialStoragePulse = 0; #endif //////////// char.h //////////// Search : void GiveGold(INT iAmount); Add after : #ifdef ENABLE_SORT_INVENTORY void SetNextSortInventoryPulse(int pulse) { m_sortInventoryPulse = pulse; } int GetSortInventoryPulse() { return m_sortInventoryPulse; } void SetNextSortSpecialStoragePulse(int pulse) { m_sortSpecialStoragePulse = pulse; } int GetSortSpecialStoragePulse() { return m_sortSpecialStoragePulse; } #endif Search : LPSHOP m_pkShop; LPSHOP m_pkMyShop; std::string m_stShopSign; LPCHARACTER m_pkChrShopOwner; Add after : #ifdef ENABLE_SORT_INVENTORY int m_sortInventoryPulse; int m_sortSpecialStoragePulse; #endif /////// Service.h //////// Add this : #define ENABLE_SORT_INVENTORY Description : [Hidden Content]
    2 points
  42. GF v21.2.8.0 Patch (Metin2 Download) Contents: root-meta, dumped binary, protos(out of date, types/values will be checked later) New map with dungeon and monsters, npcs, objects. New weapons, pet(2x textures), new mount. All files are unpacked in a folder. Demo.
    2 points
  43. [Hidden Content] @ASIKOO
    2 points
  44. M2 Download Center Download Here ( Internal ) Hello community,i have a new npc for release See ya! RatedR203 © TGC-TEAM
    2 points
  45. GF v21.1.3.0 patch (Metin2 Download) Contents: root-meta, dumped binary, protos New chat filter GUI resources New pet, new costume(Ramadan) + Hairstyle All files unpacked in a folder Soon comes the Looting System resources. Well.. They are so geniuses.
    2 points
  46. BR v21.1.1.0 Patch (Metin2 Download) Contents: root-meta, dumped binary some extra informations about the upcoming features inside the binary, uiscript and meta. GF v21.0.8 Full Client - AllInOne
    2 points
  47. 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.
    2 points
  48. GF v20.2.5 patch (Metin2 Download) Contents: Summer costumes(pirates) with hairstyle + crab pet (w/ 2 textures) - m00161 locales w/ unpacked protos root(msm+txt files) + dumped metadata w/ builtins Lots of files has been modified I didn't check them. But finally they have removed the old metin2_patch_*, outdoor*, blabla files. Now they have only m0*, no more douple or triple files in the client packfiles. From the offficial announcement they have fixed some model issues as well as this too: img. PS. The mob_proto.txt files are corrupted, because of my tool, it had a small syntax error, which caused skipping a '\t' character between the rhpregenand the hitrange. I just noticed after the file has been uploaded. The fix is for it is replace this: "00.0" with "0\t0.0". ~ . ~ v20.2.6 Full Client: Mega.nz (Metin2 Download) All multiplied files have been removed. All m00xx split folders moved together.
    2 points
  49. M2 Download Center Download Here ( Internal )
    2 points
  50. M2 Download Center Download Here ( Internal ) Hello, I want share a simple addon for more effective debugging crashes and exceptions on Windows. Technical details about mini dump: [Hidden Content] winminidump.c #define __LIBTHECORE__ #include "stdafx.h" #include "winminidump.h" #ifdef __WIN32__ #include <DbgHelp.h> #pragma comment(lib, "dbghelp.lib") // Custom minidump callback BOOL CALLBACK MiniDumpCallback(PVOID pParam, const PMINIDUMP_CALLBACK_INPUT pInput, PMINIDUMP_CALLBACK_OUTPUT pOutput) { BOOL bRet = FALSE; if (!pInput || !pOutput) return FALSE; switch (pInput->CallbackType) { case IncludeModuleCallback: { bRet = TRUE; } break; case IncludeThreadCallback: { bRet = TRUE; } break; case ModuleCallback: { if (!(pOutput->ModuleWriteFlags & ModuleReferencedByMemory)) { pOutput->ModuleWriteFlags &= (~ModuleWriteModule); } bRet = TRUE; } break; case ThreadCallback: { bRet = TRUE; } break; case ThreadExCallback: { bRet = TRUE; } break; case MemoryCallback: { bRet = FALSE; } break; case CancelCallback: break; } return bRet; } bool CreateMiniDump(EXCEPTION_POINTERS* pExceptionInfo) { fprintf(stderr, "Exception handled: %p", pExceptionInfo); if (IsDebuggerPresent()) DebugBreak(); char szProcessName[MAX_PATH]; GetModuleFileNameA(NULL, szProcessName, MAX_PATH); std::string strFileName = std::string(szProcessName); if (strFileName.size() > 0) { size_t iLastSlash = strFileName.find_last_of("\\/"); strFileName = strFileName.substr(iLastSlash + 1, strFileName.length() - iLastSlash); } time_t t; time(&t); struct tm *tinfo; tinfo = localtime(&t); char szDumpName[128]; strftime(szDumpName, sizeof(szDumpName), "dump%Y%m%d_%H%M%S.dmp", tinfo); char szDumpPath[256]; sprintf(szDumpPath, "%s_%s", strFileName.c_str(), szDumpName); HANDLE hFile = CreateFileA(szDumpPath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (!hFile || hFile == INVALID_HANDLE_VALUE) { fprintf(stderr, "Exception dump file is not created. Error code: %u Path: %s", GetLastError(), szDumpPath); return false; } // Create the minidump MINIDUMP_EXCEPTION_INFORMATION mdei; mdei.ThreadId = GetCurrentThreadId(); mdei.ExceptionPointers = pExceptionInfo; mdei.ClientPointers = FALSE; MINIDUMP_CALLBACK_INFORMATION mci; mci.CallbackRoutine = (MINIDUMP_CALLBACK_ROUTINE)MiniDumpCallback; mci.CallbackParam = 0; MINIDUMP_TYPE mdt = (MINIDUMP_TYPE)(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory); BOOL rv = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, mdt, (pExceptionInfo != 0) ? &mdei : 0, 0, &mci); if (!rv) { fprintf(stderr, "Exception dump can not created. Error code: %u", GetLastError()); } else { fprintf(stderr, "Exception dump successfully created."); } // Close the file CloseHandle(hFile); return true; } LONG WINAPI ExceptionFilter(EXCEPTION_POINTERS * pExceptionInfo) { if (pExceptionInfo && pExceptionInfo->ExceptionRecord) { if (pExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_STACK_OVERFLOW) { HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CreateMiniDump, pExceptionInfo, 0, NULL); if (hThread && hThread != INVALID_HANDLE_VALUE) { WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); } } else { CreateMiniDump(pExceptionInfo); } } return EXCEPTION_EXECUTE_HANDLER; } bool setup_minidump_generator() { if (SetUnhandledExceptionFilter(ExceptionFilter)) { fprintf(stderr, "Mini dump generator succesfully created!"); return true; } fprintf(stderr, "Mini dump generator can NOT created! Error code: %u", GetLastError()); return false; } #else bool setup_minidump_generator() { return true; } #endif winminidump.h #ifndef __INC_LIBTHECORE_WINMINIDUMP_H__ #define __INC_LIBTHECORE_WINMINIDUMP_H__ #ifdef __cplusplus extern "C" { #endif extern bool setup_minidump_generator(); #ifdef __cplusplus }; #endif #endif Copy .c file to ServerSrc\libthecore\src and .h file to ServerSrc\libthecore\include. Define new files to your Makefile or CMakeLists.txt, and to libthecore project from your server's visual studio solution Open game\src\main.cpp and call new header file #include "../../libthecore/include/winminidump.h" Now search for your entrypoint int main(int argc, char **argv) Add new lines at the beginning of the function if (setup_minidump_generator() == false) return 1; Open your db\src\main.cpp and call new header file #include "../../libthecore/include/winminidump.h" Now search for your entrypoint int main() Add new lines at the beginning of the function if (setup_minidump_generator() == false) return 1; If you are using rubinum's auth core you can implement same routine to "int main(int argc, char** argv)" function from auth\src\main.cpp If you take any exceptions after making these edits, The core will create a memory dump with the file name like CORE_FILE_NAME_dump_DATE.dmp and you can easily analyze this file via visual studio just like freebsd ".core" files.
    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.