Jump to content

cndR_s

Premium
  • Posts

    33
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Everything posted by cndR_s

  1. I really do not see the difficult for blocking m2bob. Client argument metamorphic + find pattern in files programs , when m2bob make a dir in directory.
  2. Added Rev. 140816 [ChangeLog] - Added Language Czech (translate by : Joseph Lochy ) - Update Language Spanish ( translate by : Jesús ) - Update Language Romanian ( translate by: Abel (Tiger) ) Download: [Hidden Content]
  3. Depends of your visual studio version. I using vs2010, anyway : [Hidden Content]
  4. Run administrator mode or verify if you antivirus block application (GameLauncher.exe)
  5. Which language? I would like to help translate the language of your country?
  6. Added Rev. 090816.2 [ChangeLog 090816.2] - Removed limit bandwith of Community Version: because failing to download multiple files/ buffer fail.
  7. Added Rev. 090816.1 [ChangeLog 090816.1] - Fix Application crash when all files updated.
  8. #Bug (only community version) : When all files updates, application crash . (Correction in progress)
  9. M2 Download Center Download Here ( Internal ) 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 : [Hidden Content] [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 : [Hidden Content] 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
  10. Will the taste of each. I personally like . Things " exclusive " are usually sold , no one wants to work for free . The back-end is all done , you simply change the css and html . Do not leeching if you do not like it, do not use. The community is full of it , people who want everything ready and in the best possible way. Best regards
  11. 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 Buy Item Historic 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 [Hidden Content]", 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 [Hidden Content]", ...... 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 [Hidden Content] Scan [Hidden Content]
  12. 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
  13. You already tried to truncate the table and add some items to test?
  14. What exactly do you want to change the name? Can be here: Alignment 668 - int iAlignmentGrade = GetAlignmentGrade(); Name: const std::string & c_rstrTitleName = itor->second; CPythonTextTail::Instance().AttachTitle(GetVirtualID(), c_rstrTitleName.c_str(), GetTitleColor());
  15. UserInterfaceInstanceBaseEffect.cpp sprintf(szText, "Lv %d", level);
  16. Errors "No module named xxx" are of case sensitive. Change uitooltip for uiToolTip.
×
×
  • 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.