Premium cndR_s 240 Posted August 9, 2016 Premium Share Posted August 9, 2016 (edited) M2 Download Center This is the hidden content, please Sign In or Sign Up ( Internal ) Spoiler Features Written in c++, best performance with multithreading Beautiful GUI, inspired in Blizzard All errors and exceptions throw user friendly messages International Multilanguage Fast download files Method of Hash (CRC32) by default Banner in home (Promotion, Event, New Image, etc...) + News / Patch notes Initialize client with arguments Tool user friendly for generate serverlist hashs New config game for Metin built-in (Requirements: metin2client source) Languages Availables English (US) (Full language correctly) Espanhol (ES) (Translate by : Jesús ) Portuguese (BR) (Full language correctly) Romanian (RO) (Translate by: Abel (Tiger) ) German (DE) (Translate by : Core | Simplex2 ) Turkish (TR) (Need review) Czech (Translate by : Joseph Lochy ) If your language needs review, or you want to help translate the language of their country to add to the list, you can contact me by skype and help correct . Some Community version limitations - News/PatchNotes maximum 255 characters - Without support for client initialize with arguments - Without change Icon Application - Without change Logo (Metin2 logo default) - Without change Background - Without custom Layout - Without possibility of choose hash method - Receive updates direct in Topic/forum - Without support Skype - Binarie name default for initialize: metin2client.exe INSTALL PART SERVER Rev: 140816 : This is the hidden content, please Sign In or Sign Up [ChangeLog 090816.1] - Fix Application crash when all files updated. [ChangeLog 090816.2] - Removed limit bandwith of Community Version: because failing to download multiple files/ buffer fail. [ChangeLog 140816] - Added Language Czech (translate by : Joseph Lochy ) - Update Language Spanish ( translate by : Jesús ) - Update Language Romanian ( translate by: Abel (Tiger) ) VirusScan : This is the hidden content, please Sign In or Sign Up 1. In his HOST, upload the files from the "Host Files" 2. Open GameLauncher_Manager.exe select "TAB" Server Hash. 3. Select the client directory and generate the Hash 4. Put the new "serverlist.data" in /gamelauncher/conf/ Structure [patch.notes] = Here you put an text (news/patch notes) [serverlist.data] = Responsible for client hash [slide1.png] = Banner image. The extension must be .png and same size . 5. Put the client files in the folder "/gamelauncher/data/" (host) INSTALL PART CLIENT Structure [ldata] = Folder that stores settings (This folder is the one that does not create automatic. It must exist for GameLauncher work.) [gameconfig.ini] = Metin2 client config [LauncherConfig.ini] = Launcher Config [serverconf.data] = Host configs 1. Open GameLauncher_Manager.exe and select "TAB" Config for GameLauncher Fill in the fields Homepage: Here you put the link to your website. This link must be prefixed with http:// URL Hosting: Here you put the link from the main folder where you will create the folder "gamelauncher" e.g. metin2server.net (public_html) 2. Click in "Save". Will generate a file "serverconf.data".Place in the "ldata" folder within the client. INSTALL PART CLIENT SOURCE 1. In "PythonSystem.cpp", put in header //Boost #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/ini_parser.hpp> #include <boost/lexical_cast.hpp> #define ENABLE_NEWGAMECONFIG 2. In "PythonSystem.cpp" search function "LoadConfig()" And replace with : bool CPythonSystem::LoadConfig() { #ifdef ENABLE_NEWGAMECONFIG boost::property_tree::ptree r_pt; /** * File exists? */ try { boost::property_tree::ini_parser::read_ini("ldata/gameconfig.ini", r_pt); //resolution m_Config.width = r_pt.get<DWORD>("Metin2.WIDTH"); m_Config.height = r_pt.get<DWORD>("Metin2.HEIGHT"); //frequency m_Config.frequency = r_pt.get<DWORD>("Metin2.FREQUENCY"); //gamma m_Config.gamma = r_pt.get<int>("Metin2.GAMMA"); //windowmode //fullscreen m_Config.bWindowed = r_pt.get<bool>("Metin2.WINDOW_MODE"); //software cursor m_Config.is_software_cursor = r_pt.get<bool>("Metin2.SOFTWARE_CURSOR"); //Sound Music m_Config.music_volume = r_pt.get<float>("Metin2.MUSIC", 0.0f); //Sound Effects m_Config.voice_volume = (char)r_pt.get<int>("Metin2.EFFECTS"); //fog m_Config.iDistance = r_pt.get<int>("Metin2.VISIBILITY"); //tln m_Config.bSoftwareTiling = (r_pt.get<std::string>("Metin2.SOFTWARE_TILING").length() > 1 ? 0 : r_pt.get<int>("Metin2.SOFTWARE_TILING")); //INT in byte //shadow m_Config.iShadowLevel = r_pt.get<int>("Metin2.SHADOW"); //IME GAME m_Config.bUseDefaultIME = r_pt.get<bool>("Metin2.GAME_IME"); //IME Extern m_Config.bUseDefaultIME = r_pt.get<bool>("Metin2.EXTERN_IME"); //Others m_Config.bDecompressDDS = r_pt.get<bool>("Metin2.DECOMPRESSED_TEXTURE"); m_Config.bViewChat = r_pt.get<bool>("Metin2.VIEW_CHAT"); m_Config.bAlwaysShowName = r_pt.get<bool>("Metin2.ALWAYS_VIEW_NAME"); m_Config.bShowDamage = r_pt.get<bool>("Metin2.SHOW_DAMAGE"); m_Config.bShowSalesText = r_pt.get<bool>("Metin2.SHOW_SALESTEXT"); m_Config.bNoSoundCard = false; if (m_Config.bWindowed) { unsigned screen_width = GetSystemMetrics(SM_CXFULLSCREEN); unsigned screen_height = GetSystemMetrics(SM_CYFULLSCREEN); if (m_Config.width >= screen_width) { m_Config.width = screen_width; } if (m_Config.height >= screen_height) { m_Config.height = screen_height; } } m_OldConfig = m_Config; } catch (boost::property_tree::ini_parser_error &e) { fprintf(stderr, "Game Config Error: %s\n", e.message().c_str()); } catch(const boost::property_tree::ptree_error &e) { fprintf(stderr, "Game Config Error: %s\n", e.what()); } return true; #else FILE * fp = NULL; if (NULL == (fp = fopen("metin2.cfg", "rt"))) return false; char buf[256]; char command[256]; char value[256]; while (fgets(buf, 256, fp)) { if (sscanf(buf, " %s %s\n", command, value) == EOF) break; if (!stricmp(command, "WIDTH")) m_Config.width = atoi(value); else if (!stricmp(command, "HEIGHT")) m_Config.height = atoi(value); else if (!stricmp(command, "BPP")) m_Config.bpp = atoi(value); else if (!stricmp(command, "FREQUENCY")) m_Config.frequency = atoi(value); else if (!stricmp(command, "SOFTWARE_CURSOR")) m_Config.is_software_cursor = atoi(value) ? true : false; else if (!stricmp(command, "OBJECT_CULLING")) m_Config.is_object_culling = atoi(value) ? true : false; else if (!stricmp(command, "VISIBILITY")) m_Config.iDistance = atoi(value); else if (!stricmp(command, "MUSIC_VOLUME")) { if(strchr(value, '.') == 0) { // Old compatiability m_Config.music_volume = pow(10.0f, (-1.0f + (((float) atoi(value)) / 5.0f))); if(atoi(value) == 0) m_Config.music_volume = 0.0f; } else m_Config.music_volume = atof(value); } else if (!stricmp(command, "VOICE_VOLUME")) m_Config.voice_volume = (char) atoi(value); else if (!stricmp(command, "GAMMA")) m_Config.gamma = atoi(value); else if (!stricmp(command, "IS_SAVE_ID")) m_Config.isSaveID = atoi(value); else if (!stricmp(command, "SAVE_ID")) strncpy(m_Config.SaveID, value, 20); else if (!stricmp(command, "PRE_LOADING_DELAY_TIME")) g_iLoadingDelayTime = atoi(value); else if (!stricmp(command, "WINDOWED")) { m_Config.bWindowed = atoi(value) == 1 ? true : false; } else if (!stricmp(command, "USE_DEFAULT_IME")) m_Config.bUseDefaultIME = atoi(value) == 1 ? true : false; else if (!stricmp(command, "SOFTWARE_TILING")) m_Config.bSoftwareTiling = atoi(value); else if (!stricmp(command, "SHADOW_LEVEL")) m_Config.iShadowLevel = atoi(value); else if (!stricmp(command, "DECOMPRESSED_TEXTURE")) m_Config.bDecompressDDS = atoi(value) == 1 ? true : false; else if (!stricmp(command, "NO_SOUND_CARD")) m_Config.bNoSoundCard = atoi(value) == 1 ? true : false; else if (!stricmp(command, "VIEW_CHAT")) m_Config.bViewChat = atoi(value) == 1 ? true : false; else if (!stricmp(command, "ALWAYS_VIEW_NAME")) m_Config.bAlwaysShowName = atoi(value) == 1 ? true : false; else if (!stricmp(command, "SHOW_DAMAGE")) m_Config.bShowDamage = atoi(value) == 1 ? true : false; else if (!stricmp(command, "SHOW_SALESTEXT")) m_Config.bShowSalesText = atoi(value) == 1 ? true : false; } if (m_Config.bWindowed) { unsigned screen_width = GetSystemMetrics(SM_CXFULLSCREEN); unsigned screen_height = GetSystemMetrics(SM_CYFULLSCREEN); if (m_Config.width >= screen_width) { m_Config.width = screen_width; } if (m_Config.height >= screen_height) { m_Config.height = screen_height; } } m_OldConfig = m_Config; fclose(fp); // Tracef("LoadConfig: Resolution: %dx%d %dBPP %dHZ Software Cursor: %d, Music/Voice Volume: %d/%d Gamma: %d\n", // m_Config.width, // m_Config.height, // m_Config.bpp, // m_Config.frequency, // m_Config.is_software_cursor, // m_Config.music_volume, // m_Config.voice_volume, // m_Config.gamma); return true; #endif // ENABLE_NEWGAMECONFIG } 3. Search function "SaveConfig()" and replace with: bool CPythonSystem::SaveConfig() { #ifdef ENABLE_NEWGAMECONFIG boost::property_tree::ptree pt; pt.put("Metin2.WIDTH", m_Config.width); pt.put("Metin2.HEIGHT", m_Config.height); pt.put("Metin2.FREQUENCY", m_Config.frequency); pt.put("Metin2.GAMMA", m_Config.gamma); pt.put("Metin2.WINDOW_MODE", (m_Config.bWindowed == 1 ? 1 : 0)); pt.put("Metin2.FULLSCREEN", (m_Config.bWindowed == 1 ? 0 : 1)); pt.put("Metin2.SOFTWARE_CURSOR", boost::lexical_cast<std::string>(m_Config.is_software_cursor)); pt.put("Metin2.MUSIC", m_Config.music_volume); pt.put("Metin2.EFFECTS", m_Config.voice_volume); pt.put("Metin2.VISIBILITY", m_Config.iDistance); pt.put("Metin2.SOFTWARE_TILING", m_Config.bSoftwareTiling); //tln pt.put("Metin2.SHADOW", m_Config.iShadowLevel); pt.put("Metin2.GAME_IME", (m_Config.bUseDefaultIME == true ? 0 : 1)); pt.put("Metin2.EXTERN_IME", (m_Config.bUseDefaultIME == true ? 1 : 0)); //Game Config Others pt.put("Metin2.DECOMPRESSED_TEXTURE", (m_Config.bDecompressDDS == true ? 1 : 0)); pt.put("Metin2.VIEW_CHAT", (m_Config.bViewChat == true ? 1 : 0)); pt.put("Metin2.ALWAYS_VIEW_NAME", (m_Config.bAlwaysShowName == true ? 1 : 0)); pt.put("Metin2.SHOW_DAMAGE", (m_Config.bShowDamage == true ? 1 : 0)); pt.put("Metin2.SHOW_SALESTEXT", (m_Config.bShowSalesText == true ? 1 : 0)); try { boost::property_tree::ini_parser::write_ini("ldata/gameconfig.ini", pt); } catch (boost::property_tree::ini_parser_error &e) { fprintf(stderr, "Game Config Error: %s\n", e.message().c_str()); } catch(const boost::property_tree::ptree_error &e) { fprintf(stderr, "Game Config Error: %s\n", e.what()); } return true; #else FILE *fp; if (NULL == (fp = fopen("metin2.cfg", "wt"))) return false; fprintf(fp, "WIDTH %d\n" "HEIGHT %d\n" "BPP %d\n" "FREQUENCY %d\n" "SOFTWARE_CURSOR %d\n" "OBJECT_CULLING %d\n" "VISIBILITY %d\n" "MUSIC_VOLUME %.3f\n" "VOICE_VOLUME %d\n" "GAMMA %d\n" "IS_SAVE_ID %d\n" "SAVE_ID %s\n" "PRE_LOADING_DELAY_TIME %d\n" "DECOMPRESSED_TEXTURE %d\n", m_Config.width, m_Config.height, m_Config.bpp, m_Config.frequency, m_Config.is_software_cursor, m_Config.is_object_culling, m_Config.iDistance, m_Config.music_volume, m_Config.voice_volume, m_Config.gamma, m_Config.isSaveID, m_Config.SaveID, g_iLoadingDelayTime, m_Config.bDecompressDDS); if (m_Config.bWindowed == 1) fprintf(fp, "WINDOWED %d\n", m_Config.bWindowed); if (m_Config.bViewChat == 0) fprintf(fp, "VIEW_CHAT %d\n", m_Config.bViewChat); if (m_Config.bAlwaysShowName != DEFAULT_VALUE_ALWAYS_SHOW_NAME) fprintf(fp, "ALWAYS_VIEW_NAME %d\n", m_Config.bAlwaysShowName); if (m_Config.bShowDamage == 0) fprintf(fp, "SHOW_DAMAGE %d\n", m_Config.bShowDamage); if (m_Config.bShowSalesText == 0) fprintf(fp, "SHOW_SALESTEXT %d\n", m_Config.bShowSalesText); fprintf(fp, "USE_DEFAULT_IME %d\n", m_Config.bUseDefaultIME); fprintf(fp, "SOFTWARE_TILING %d\n", m_Config.bSoftwareTiling); fprintf(fp, "SHADOW_LEVEL %d\n", m_Config.iShadowLevel); fprintf(fp, "\n"); fclose(fp); return true; #endif // ENABLE_NEWGAMECONFIG } Notes: Any doubt or mistake you can ask here on the topic. To more details about the PRO version, you can contact me by skype. Request in my profile or PM Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal 48 1 1 1 2 1 1 20 3 60 Link to comment Share on other sites More sharing options...
Premium Galet 510 Posted August 9, 2016 Premium Share Posted August 9, 2016 Thanks ! Pretty professional Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 #Bug (only community version) : When all files updates, application crash . (Correction in progress) Link to comment Share on other sites More sharing options...
stein20 15 Posted August 9, 2016 Share Posted August 9, 2016 wow look good. thx Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 Added Rev. 090816.1 [ChangeLog 090816.1] - Fix Application crash when all files updated. Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 Added Rev. 090816.2 [ChangeLog 090816.2] - Removed limit bandwith of Community Version: because failing to download multiple files/ buffer fail. Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 9, 2016 Share Posted August 9, 2016 1 minute ago, mkIvi3 said: Added Rev. 090816.2 [ChangeLog 090816.2] - Removed limit bandwith of Community Version: because failing to download multiple files/ buffer fail. New download ? Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 1 minute ago, Tr3l said: New download ? This is the hidden content, please Sign In or Sign Up Topic edited. 9 8 4 Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 9, 2016 Share Posted August 9, 2016 (edited) No download :-? Delete " Face" and leave only the " Can not close " in there as well . SpoilerSpoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 (edited) 1 hour ago, Tr3l said: No download :-? Delete " Face" and leave only the " Can not close " in there as well . Which language? I would like to help translate the language of your country? SpoilerSpoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Premium TAUMP 841 Posted August 9, 2016 Premium Share Posted August 9, 2016 54 minutes ago, mkIvi3 said: Which language? I would like to help translate the language of your country? Can i translate to my langauge? Czech. Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 9, 2016 Author Premium Share Posted August 9, 2016 47 minutes ago, .T4Ump said: Can i translate to my langauge? Czech. Yes, add skype. Link to comment Share on other sites More sharing options...
Premium Crystal™ 25 Posted August 10, 2016 Premium Share Posted August 10, 2016 Please can you share with us the GameLauncher.exe's source? Link to comment Share on other sites More sharing options...
Itachi 44 Posted August 10, 2016 Share Posted August 10, 2016 what? This work led him to believe that shareware is very good contribution Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 10, 2016 Share Posted August 10, 2016 (edited) 12 hours ago, mkIvi3 said: Which language? I would like to help translate the language of your country? Romanian (RO) I pressed the play and the error occurs and does not turn that down . Spoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 10, 2016 Author Premium Share Posted August 10, 2016 (edited) 1 hour ago, Crystal™ said: Please can you share with us the GameLauncher.exe's source? Only Paid, sorry 37 minutes ago, Tr3l said: Romanian (RO) Why not download the files ? You may have set config wrong. Spoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 10, 2016 Share Posted August 10, 2016 (edited) 1 minute ago, mkIvi3 said: You may have set config wrong. I pressed the play and the error occurs and does not turn that down . Spoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 10, 2016 Author Premium Share Posted August 10, 2016 (edited) 1 minute ago, Tr3l said: I pressed the play and the error occurs and does not turn that down . Run administrator mode or verify if you antivirus block application (GameLauncher.exe) Spoiler Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 10, 2016 Share Posted August 10, 2016 30 minutes ago, mkIvi3 said: Run administrator mode or verify if you antivirus block application (GameLauncher.exe) I solved. But not download the files put me in gamelauncher / data . I set up well. Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 10, 2016 Author Premium Share Posted August 10, 2016 Link to comment Share on other sites More sharing options...
Tr3l 38 Posted August 10, 2016 Share Posted August 10, 2016 4 hours ago, mkIvi3 said: I will make a video tutorial (How config and How translate for your country. If you made web links can you give me ? Link to comment Share on other sites More sharing options...
ladcatalin 6 Posted August 11, 2016 Share Posted August 11, 2016 This looks very good, but i have a error when i try to compile binary source: Error 1 fatal error C1083: Cannot open include file: 'boost/property_tree/ptree.hpp': No such file or directory e:\Sursa server\SursaLauncher BUNA\UserInterface\PythonSystem.cpp 6 UserInterface Error 2 error BK1506 : cannot open file '.\Release\PythonSystem.sbr': No such file or directory BSCMAKE UserInterface Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 12, 2016 Author Premium Share Posted August 12, 2016 18 hours ago, ladcatalin said: This looks very good, but i have a error when i try to compile binary source: Error 1 fatal error C1083: Cannot open include file: 'boost/property_tree/ptree.hpp': No such file or directory e:\Sursa server\SursaLauncher BUNA\UserInterface\PythonSystem.cpp 6 UserInterface Error 2 error BK1506 : cannot open file '.\Release\PythonSystem.sbr': No such file or directory BSCMAKE UserInterface You need library boost in extern folder Link to comment Share on other sites More sharing options...
ladcatalin 6 Posted August 12, 2016 Share Posted August 12, 2016 3 minutes ago, mkIvi3 said: You need library boost in extern folder Can you give me this files? I dont have this in extern/include/boost boost/property_tree/ptree.hpp boost/property_tree/ini_parser.hpp Link to comment Share on other sites More sharing options...
Premium cndR_s 240 Posted August 14, 2016 Author Premium Share Posted August 14, 2016 On 12/08/2016 at 2:58 PM, ladcatalin said: Can you give me this files? I dont have this in extern/include/boost boost/property_tree/ptree.hpp boost/property_tree/ini_parser.hpp Depends of your visual studio version. I using vs2010, anyway : https://sourceforge.net/projects/boost/files/boost/1.61.0/ 1 4 Link to comment Share on other sites More sharing options...
Recommended Posts