Jump to content

cndR_s

Premium
  • Posts

    33
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Posts posted by cndR_s

  1. On 30/08/2016 at 0:31 PM, Souza said:

    Can you possible make that we can customize the entire design by itself?

    Background u.a

    Only paid version

    On 04/09/2016 at 4:34 PM, EnKor said:

    Bug 1)

    • When we start the patcher and after updates, u need to keep this patcher open. If o close it, game window will close too. if u wanna login other acc, u have to open one more autopacher. At the end, if u have 3 acc online, u will get 3 autopacher online too. 

     

     

    Bug2)

    • When we run GameLauncher_Manager.exe to get HASH from files, the program never get the hash from last file.

     

     

    sadly...This autopacher as a very very nice interface yes. But this free version its 100% junk.

    All bugs fixeds in paid version

  2. 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

  3. M2 Download Center

    This is the hidden content, please
    ( 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

    [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

    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)

    5e1856cb5817451d9f30a3859da849dc.png

     

    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

    fe21825d74c64d7ea8edff71f059b9c1.png

    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

    • Metin2 Dev 48
    • kekw 1
    • Dislove 1
    • Angry 1
    • Sad 2
    • Think 1
    • Confused 1
    • Good 20
    • Love 3
    • Love 58
  4. I found in my disk an old project of itemshop and i decided to share with community. It works perfectly.

    Features:

    - AES crypt hash

    - PIN Security

    - Buy Itens Stackable, With Time and Simple

    - Language: English (I'm sorry, but some column in db are in Portuguese, i speak portuguese, but i explained in the topic end)

     

    Home

    867356f6f95c493a9ccbad5ea14092bc.png

    6b3d515093184f3fb8fed42573dc786a.png

    a69d0278f7924373aa53c4f7c4ce2b24.png

     Buy Item

    9b5e1577dc3b43edb692052a17865f94.png

    a265a33e6ce8463cbc1e08749902824b.png

    Historic

    4e4db1a1b4b94427b7e12cf20c4096fa.png

     

    Struct of tables

    mall_categories ([id] = id, [categorieName] = Name of Category)

    mall_historic_buys ( [conta] = account , [item] = item, [valorGasto] = amount spent, [dataBuy] = date of purchase )

    mall_itens ([item_id] = ID of item in item_proto, [item_name] = Name of item, [item_desc] = Description of item, [item_img] = Relative to the path //assets//detail_view//item_img.png and path detail_view_full, [item_cat] = ID relative to the category, [item_type] = here is a enum(simple, expire or stackable), [item_count] = quantity, [socket0] = time for for items to of type expire, [socket1] and [socket2] do not fill.)

    mall_pinusers ([accountName] = account login relative to the account.account, [pinCode] = pin security)

    SQL 

    -- MySQL dump --
    -- ---------------------------------------------------------
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    -- ---------------------------------------------------------
    
    
    -- CREATE DATABASE "ingamemall" ----------------------------
    CREATE DATABASE IF NOT EXISTS `ingamemall` CHARACTER SET latin1 COLLATE latin1_swedish_ci;
    USE `ingamemall`;
    -- ---------------------------------------------------------
    
    
    -- CREATE TABLE "mall_categories" --------------------------
    CREATE TABLE `mall_categories` ( 
    	`id` Int( 11 ) AUTO_INCREMENT NOT NULL,
    	`CategorieName` VarChar( 255 ) NOT NULL,
    	PRIMARY KEY ( `id` ) )
    ENGINE = InnoDB
    AUTO_INCREMENT = 4;
    -- ---------------------------------------------------------
    
    
    -- CREATE TABLE "mall_historic_buys" -----------------------
    CREATE TABLE `mall_historic_buys` ( 
    	`id` Int( 11 ) AUTO_INCREMENT NOT NULL,
    	`conta` VarChar( 255 ) NOT NULL,
    	`item` VarChar( 255 ) NOT NULL,
    	`valorGasto` VarChar( 255 ) NOT NULL,
    	`dataBuy` DateTime NOT NULL,
    	PRIMARY KEY ( `id` ) )
    ENGINE = InnoDB
    AUTO_INCREMENT = 11;
    -- ---------------------------------------------------------
    
    
    -- CREATE TABLE "mall_itens" -------------------------------
    CREATE TABLE `mall_itens` ( 
    	`id` Int( 11 ) AUTO_INCREMENT NOT NULL,
    	`item_id` Int( 11 ) NOT NULL,
    	`item_name` VarChar( 255 ) NOT NULL,
    	`item_price` Int( 255 ) NOT NULL,
    	`item_desc` VarChar( 255 ) NOT NULL,
    	`item_img` VarChar( 255 ) NOT NULL,
    	`item_cat` Int( 255 ) NOT NULL,
    	`item_type` Enum( 'simple', 'expire', 'stackable' ) NOT NULL DEFAULT 'simple',
    	`item_count` Int( 11 ) NOT NULL,
    	`socket0` Int( 255 ) NULL DEFAULT '0',
    	`socket1` Int( 255 ) NULL DEFAULT '0',
    	`socket2` Int( 255 ) NULL DEFAULT '0',
    	PRIMARY KEY ( `id` ) )
    ENGINE = InnoDB
    AUTO_INCREMENT = 4;
    -- ---------------------------------------------------------
    
    
    -- CREATE TABLE "mall_pinusers" ----------------------------
    CREATE TABLE `mall_pinusers` ( 
    	`id` Int( 11 ) AUTO_INCREMENT NOT NULL,
    	`accountName` VarChar( 255 ) NOT NULL,
    	`pinCode` VarChar( 255 ) NOT NULL,
    	PRIMARY KEY ( `id` ) )
    ENGINE = InnoDB
    AUTO_INCREMENT = 3;
    -- ---------------------------------------------------------
    
    
    -- Dump data of "mall_categories" --------------------------
    INSERT INTO `mall_categories`(`id`,`CategorieName`) VALUES ( '1', 'Swords' );
    INSERT INTO `mall_categories`(`id`,`CategorieName`) VALUES ( '2', 'Costumes' );
    INSERT INTO `mall_categories`(`id`,`CategorieName`) VALUES ( '3', 'Others' );
    -- ---------------------------------------------------------
    
    
    -- Dump data of "mall_historic_buys" -----------------------
    INSERT INTO `mall_historic_buys`(`id`,`conta`,`item`,`valorGasto`,`dataBuy`) VALUES ( '14', 'mkIvi3', 'Traje do Deserto', '5000', '2016-07-31 20:52:53' );
    INSERT INTO `mall_historic_buys`(`id`,`conta`,`item`,`valorGasto`,`dataBuy`) VALUES ( '15', 'mkIvi3', 'Esferas da Benção', '5000', '2016-07-31 21:05:25' );
    INSERT INTO `mall_historic_buys`(`id`,`conta`,`item`,`valorGasto`,`dataBuy`) VALUES ( '16', 'mkIvi3', 'Espada +9', '2500', '2016-07-31 21:05:43' );
    -- ---------------------------------------------------------
    
    
    -- Dump data of "mall_itens" -------------------------------
    INSERT INTO `mall_itens`(`id`,`item_id`,`item_name`,`item_price`,`item_desc`,`item_img`,`item_cat`,`item_type`,`item_count`,`socket0`,`socket1`,`socket2`) VALUES ( '1', '19', 'Espada +9', '2500', 'Espada +9 para Guerreiro', '00010', '1', 'simple', '1', '0', '0', '0' );
    INSERT INTO `mall_itens`(`id`,`item_id`,`item_name`,`item_price`,`item_desc`,`item_img`,`item_cat`,`item_type`,`item_count`,`socket0`,`socket1`,`socket2`) VALUES ( '2', '41003', 'Traje do Deserto', '5000', 'Traje do Deserto', '41003', '2', 'expire', '1', '1470084001', '0', '0' );
    INSERT INTO `mall_itens`(`id`,`item_id`,`item_name`,`item_price`,`item_desc`,`item_img`,`item_cat`,`item_type`,`item_count`,`socket0`,`socket1`,`socket2`) VALUES ( '3', '70024', 'Esferas da Benção', '5000', 'Esferas da Benção', '70024', '3', 'stackable', '200', '0', '0', '0' );
    -- ---------------------------------------------------------
    
    
    -- Dump data of "mall_pinusers" ----------------------------
    INSERT INTO `mall_pinusers`(`id`,`accountName`,`pinCode`) VALUES ( '4', 'mkIvi3', '123456' );
    -- ---------------------------------------------------------
    
    
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    -- ---------------------------------------------------------
    
    

     

    Game Source

    In cmd_general.cpp (header includes)

    add

    #include <cryptopp/aes.h>
    #include <cryptopp/modes.h>
    #include <cryptopp/base64.h>
    #include <boost/lexical_cast.hpp>

    Search for 

    ACMD(do_in_game_mall)

    above add

    std::string aes_encrypt(const std::string& str_in, const std::string& key, const std::string& iv)
    {
        std::string str_out;
        CryptoPP::CFB_Mode<CryptoPP::AES>::Encryption encryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str());
    
        CryptoPP::StringSource encryptor(str_in, true,
            new CryptoPP::StreamTransformationFilter(encryption,
                new CryptoPP::Base64Encoder(
                    new CryptoPP::StringSink(str_out),
                    false
                )
            )
        );
        return str_out;
    }

     

    in function 

    ACMD(do_in_game_mall)
    //REPLACE 
    		char buf[512+1];
    		char sas[33];
    		MD5_CTX ctx;
    		const char sas_key[] = "GF9001";
    
    		snprintf(buf, sizeof(buf), "%u%u%s", ch->GetPlayerID(), ch->GetAID(), sas_key);
    
    		MD5Init(&ctx);
    		MD5Update(&ctx, (const unsigned char *) buf, strlen(buf));
    #ifdef __FreeBSD__
    		MD5End(&ctx, sas);
    #else
    		static const char hex[] = "0123456789abcdef";
    		unsigned char digest[16];
    		MD5Final(digest, &ctx);
    		int i;
    		for (i = 0; i < 16; ++i) {
    			sas[i+i] = hex[digest[i] >> 4];
    			sas[i+i+1] = hex[digest[i] & 0x0f];
    		}
    		sas[i+i] = '\0';
    
    // WITH THIS
    		std::string GameKeyShop = "RZN942";
            std::string key = "96582146752486249517535915478532"; // 32 bytes
            std::string iv  = "5476325954125471"; // 16 bytes
    
            std::string encryptKeyAES = boost::lexical_cast<std::string>(ch->GetPlayerID()) + boost::lexical_cast<std::string>(ch->GetAID()) + GameKeyShop;
    
            std::string str_encrypted = aes_encrypt(encryptKeyAES, key, iv);
    
            char buffer[512+1];
    
            snprintf(buffer, sizeof(buffer), "mall http://%s/index.php?pid=%u&sas=%s",
                     g_strWebMallURL.c_str(), ch->GetPlayerID(), str_encrypted.c_str());
    
            //ch->ChatPacket(CHAT_TYPE_INFO, buffer); //Debug output
            ch->ChatPacket(CHAT_TYPE_COMMAND, buffer);

    And remove the rest

    snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d&sas=%s", ......
    

    PHP Files Config

    //manage//Classes//Configurations//GameConfig.php
    /* Defines for Connection*/
    
    $SisDbHost = "192.168.25.57"; //IP SERVER
    $SisDbUser = "root"; //user db
    $SisDbPass = "password"; //password db
    $SisDbTB = "account"; // db by default
    
    //Game Tables
    $Account_db = "account"; //YOUR GAME ACCOUNT DB (live_account, account, some_account)
    $Player_db = "player"; //YOUR GAME PLAYER DB (live_player, player, some_player)
    
    $GameKeyShop = "RZN942"; //KEY string, change this, and change in source game
    $AES_IV = '5476325954125471'; //16 bytes   CHANGE HERE AND CHANGE in SOURCE GAME
    $AES_KEY = '96582146752486249517535915478532'; //32 bytes CHANGE HERE AND CHANGE in SOURCE GAME

     

    And Core CONFIG

    MALL_URL: localhost/m2ingameshop

    Column in account by default 'cash'

    Download

    This is the hidden content, please

    Scan

    This is the hidden content, please

    • Metin2 Dev 2
    • Good 1
    • Love 5
  5. Correction:

    Because $MYSQLDUMP its not recognized.

    Get directorie mysqldump

    which mysqldump and copy result before "-u"

    
    
    

    # Dump and compress
    for db in $DATABASES
    do
        FILE=$db.$FILETIME.gz
        echo -e "033[32mDumping $db!033[0m"
        /usr/local/bin/mysqldump -u $MYSQL_USER -p$MYSQL_PASS $db | $GZIP -9 > $LOCAL_FOLDER/$DAY/$TIME_NOW/$FILE
    done

    [/code/

     

    Debug:

    env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin LOCALSCRIPT.SH

×
×
  • 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.