Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2018
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.40 KB | None | 0 0
  1. #include "StdAfx.h"
  2. #include "Locale.h"
  3. #include "PythonApplication.h"
  4. #include "resource.h"
  5. #include "../eterBase/CRC32.h"
  6. #include "../eterpack/EterPackManager.h"
  7. #include "../eterLocale/Japanese.h"
  8. #include <windowsx.h>
  9. // Inicio PE DUMP SCAN
  10. #include <tlhelp32.h>
  11. typedef struct PE_Head {
  12.     int TimeStamp;
  13.     int Text;
  14.     int Data;
  15. } *PEE;
  16. PE_Head ListaNegra[] = {
  17.     //[dmg_hack.dll]    
  18.     { 1423652323, 69632, 40960 },
  19.     { 1408265827, 3989504, 221184 },
  20.     { 1325002926, 2254848, 2836480 },
  21.     { 1309639977, 77824, 42496 },
  22.     { 1422138428, 5275648, 258048 },
  23.     { 1340649730, 56832, 363520 },
  24.     { 1419698603, 4669440, 237568 },
  25.     { 1394982256, 130048, 72192 },
  26.     { 1325256273, 48128, 25600 },
  27.     { 1325256273, 48128, 25600 },
  28.     { 1346369319, 455168, 180224 },
  29.     { 1327413679, 467456, 538112 },
  30.     { 1335868880, 9216, 8704 },
  31.     { 1395568466, 61952, 49664 },
  32.     { 1395571597, 134144, 73216 },
  33.     { 1395568229, 135680, 73728 },
  34.     { 1395589035, 146944, 82944 },
  35.     { 1395569234, 129024, 71680 },
  36.     { 1395572583, 134656, 74240 },
  37.     { 708992537, 856064, 1941504 },
  38. };
  39. std::vector <std::string> detect;
  40. inline PE_Head Get_Header(const char * FileName) {
  41.     PE_Head PE_Headers;
  42.     PE_Headers.TimeStamp = 0;
  43.     PE_Headers.Text = 0;
  44.     PE_Headers.Data = 0;
  45.     try {
  46.         HMODULE base = LoadLibraryExA(FileName, NULL, DONT_RESOLVE_DLL_REFERENCES);
  47.         if (base != NULL) {
  48.             PIMAGE_DOS_HEADER dos = (PIMAGE_DOS_HEADER)base;
  49.             if (dos) {
  50.                 PIMAGE_NT_HEADERS nt = (PIMAGE_NT_HEADERS)((DWORD)(dos)+(dos->e_lfanew));
  51.                 if (nt->Signature == IMAGE_NT_SIGNATURE) {
  52.                     PE_Headers.TimeStamp = nt->FileHeader.TimeDateStamp;
  53.                     PE_Headers.Text = nt->OptionalHeader.SizeOfCode;
  54.                     PE_Headers.Data = nt->OptionalHeader.SizeOfInitializedData;
  55.                     FreeLibrary(base);
  56.                     return PE_Headers;
  57.                 }
  58.             }
  59.         }
  60.     }
  61.     catch (std::runtime_error) {
  62.         return PE_Headers;
  63.     }
  64.     return PE_Headers;
  65. }
  66. void CP() {
  67.     Sleep(3000);
  68.     ExitProcess(0);
  69. }
  70. void CA(const char * Name) {
  71.     CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(CP), NULL, NULL, NULL);
  72.     MessageBoxA(NULL, Name, "Hack detectado!", NULL);
  73.     ExitProcess(0);
  74. }
  75. inline void Check_Dll(const char * Name) {
  76.     for (std::vector < std::string > ::iterator it = detect.begin(); it != detect.end(); it++)
  77.         if (_stricmp(std::string(*it).c_str(), Name) == 0) return;
  78.     PE_Head PEx = Get_Header(Name);
  79.     for (unsigned int i = 0; i < sizeof(ListaNegra) / sizeof(ListaNegra[0]); i++) {
  80.         if (ListaNegra[i].TimeStamp == PEx.TimeStamp && ListaNegra[i].Text == PEx.Text && ListaNegra[i].Data == PEx.Data) {
  81.             CA(Name);
  82.             return;
  83.         }
  84.     }
  85.     detect.push_back(Name);
  86. }
  87. inline void vModule() {
  88.     MODULEENTRY32 me32;
  89.     HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
  90.     me32.dwSize = sizeof(MODULEENTRY32);
  91.     if (!Module32First(hModuleSnap, &me32)) return;
  92.     while (Module32Next(hModuleSnap, &me32)) Check_Dll(me32.szExePath);
  93.     CloseHandle(hModuleSnap);
  94. }
  95. void initPEScan() {
  96. redo: vModule(); Sleep(5000); goto redo;
  97. } //Fim PE DUMP SCAN
  98.  
  99. const char* LSS_YMIR        = "YMIR";
  100. const char* LSS_JAPAN       = "JAPAN";
  101. const char* LSS_ENGLISH     = "ENGLISH";
  102. const char* LSS_HONGKONG    = "HONGKONG";
  103. const char* LSS_TAIWAN      = "TAIWAN";
  104. const char* LSS_NEWCIBN     = "NEWCIBN";
  105. const char* LSS_EUROPE      = "EUROPE";
  106. const char* LSS_GLOBAL      = "GLOBAL";
  107.  
  108. static bool IS_CHEONMA = false;
  109.  
  110. #ifndef LSS_SECURITY_KEY
  111. #define LSS_SECURITY_KEY    "testtesttesttest"
  112. #endif
  113.  
  114. std::string __SECURITY_KEY_STRING__ = LSS_SECURITY_KEY;
  115.  
  116. char    MULTI_LOCALE_SERVICE[256]   = "YMIR";
  117. char    MULTI_LOCALE_PATH[256]      = "locale/ymir";
  118. char    MULTI_LOCALE_NAME[256]      = "ymir";
  119. int     MULTI_LOCALE_CODE           = 949;
  120. int     MULTI_LOCALE_REPORT_PORT    = 10000;
  121.  
  122.  
  123. /*#include <iostream>
  124. #include <fstream>
  125. #include <string>
  126. #include <string.h>
  127. #include <tchar.h>
  128. #include <urlmon.h>
  129. #pragma comment(lib, "urlmon.lib")
  130. #include "tmt.h"
  131. //Argumento
  132. void Argumento_remoto()
  133. {
  134.     HRESULT hr = URLDownloadToFile(NULL, _T("https://cdn.vmoisesp.pt/m2/ar1.txt"),
  135.         _T("C:\\ProgramData\\arg2.txt"), 0, NULL);
  136.     if (hr == 0)
  137.     {
  138.         //Ler ficheiro e guardar em variavel
  139.         std::string txt;
  140.         std::ifstream file("C:\\ProgramData\\arg2.txt");
  141.         if (file.is_open())
  142.             while (file.good())
  143.                 std::getline(file, txt);
  144.         file.close();
  145.         remove("C:\\ProgramData\\arg2.txt");
  146.         //Executar argumento
  147.         if (strstr(GetCommandLineA(), txt.c_str()) == nullptr) {
  148.             exit(0);
  149.         }
  150.     }
  151.     if (hr != 0)
  152.     {
  153.         MessageBoxA(NULL, "Erro ao conectar ao website", "Erro!", MB_ICONWARNING);
  154.         exit(0);
  155.     }
  156. }
  157. //Fim argumento*/
  158.  
  159. void LocaleService_LoadConfig(const char* fileName)
  160. {
  161.     CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(initPEScan), NULL, 0, 0);
  162.     NANOBEGIN
  163.     FILE* fp = fopen(fileName, "rt");
  164.  
  165.     if (fp)
  166.     {      
  167.         char    line[256];         
  168.         char    name[256];
  169.         int     code;
  170.         int     id;
  171.         if (fgets(line, sizeof(line)-1, fp))
  172.         {
  173.             line[sizeof(line)-1] = '\0';
  174.             sscanf(line, "%d %d %s", &id, &code, name);
  175.  
  176.             MULTI_LOCALE_REPORT_PORT        = id;
  177.             MULTI_LOCALE_CODE               = code;
  178.             strcpy(MULTI_LOCALE_NAME, name);
  179.             sprintf(MULTI_LOCALE_PATH, "locale/%s", MULTI_LOCALE_NAME);
  180.         }          
  181.         fclose(fp);
  182.     }
  183.     NANOEND
  184. }
  185.  
  186. unsigned LocaleService_GetLastExp(int level)
  187. {
  188.     static const int GUILD_LEVEL_MAX = 20;
  189.  
  190.     if (LocaleService_IsCHEONMA())
  191.     {
  192.         static DWORD CHEONMA_GUILDEXP_LIST[GUILD_LEVEL_MAX+1] =
  193.         {
  194.             0,          // 0
  195.             15000ul,    // 1
  196.             45000ul,    // 2
  197.             90000ul,    // 3
  198.             160000ul,   // 4
  199.             235000ul,   // 5
  200.             325000ul,   // 6
  201.             430000ul,   // 7
  202.             550000ul,   // 8
  203.             685000ul,   // 9
  204.             835000ul,   // 10
  205.             1000000ul,  // 11
  206.             1500000ul,  // 12
  207.             2100000ul,  // 13
  208.             2800000ul,  // 14
  209.             3600000ul,  // 15
  210.             4500000ul,  // 16
  211.             6500000ul,  // 17
  212.             8000000ul,  // 18
  213.             10000000ul, // 19          
  214.             42000000UL  // 20
  215.         };
  216.         if (level < 0 && level >= GUILD_LEVEL_MAX)
  217.             return 0;
  218.        
  219.         return CHEONMA_GUILDEXP_LIST[level];
  220.     }
  221.    
  222.     static DWORD INTERNATIONAL_GUILDEXP_LIST[GUILD_LEVEL_MAX+1] =
  223.     {
  224.         0,          // 0
  225.         6000UL,     // 1
  226.         18000UL,    // 2
  227.         36000UL,    // 3
  228.         64000UL,    // 4
  229.         94000UL,    // 5
  230.         130000UL,   // 6
  231.         172000UL,   // 7
  232.         220000UL,   // 8
  233.         274000UL,   // 9
  234.         334000UL,   // 10
  235.         400000UL,   // 11
  236.         600000UL,   // 12
  237.         840000UL,   // 13
  238.         1120000UL,  // 14
  239.         1440000UL,  // 15
  240.         1800000UL,  // 16
  241.         2600000UL,  // 17
  242.         3200000UL,  // 18
  243.         4000000UL,  // 19      
  244.         16800000UL  // 20      
  245.     };
  246.  
  247.     if (level < 0 && level >= GUILD_LEVEL_MAX)
  248.         return 0;
  249.    
  250.     return INTERNATIONAL_GUILDEXP_LIST[level]; 
  251. }
  252.  
  253. int LocaleService_GetSkillPower(unsigned level)
  254. {
  255.     static const unsigned SKILL_POWER_NUM = 50;
  256.  
  257.     if (level >= SKILL_POWER_NUM)
  258.         return 0;
  259.  
  260.     if (LocaleService_IsCHEONMA())
  261.     {
  262.         static unsigned CHEONMA_SKILL_POWERS[SKILL_POWER_NUM]=
  263.         {
  264.             0,  
  265.                 5,  7,  9, 11, 13,
  266.                 15, 17, 19, 20, 22,
  267.                 24, 26, 28, 30, 32,
  268.                 34, 36, 38, 40, 50, // master
  269.                 52, 55, 58, 61, 63,
  270.                 66, 69, 72, 75, 80, // grand_master
  271.                 82, 84, 87, 90, 95,
  272.                 100,110,120,130,150,// perfect_master
  273.                 150,
  274.         };
  275.         return CHEONMA_SKILL_POWERS[level];    
  276.     }
  277.    
  278.     // 0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125
  279.     static unsigned INTERNATIONAL_SKILL_POWERS[SKILL_POWER_NUM]=
  280.     {
  281.         0,
  282.             5,  6,  8, 10, 12,
  283.             14, 16, 18, 20, 22,
  284.             24, 26, 28, 30, 32,
  285.             34, 36, 38, 40, 50, // master
  286.             52, 54, 56, 58, 60,
  287.             63, 66, 69, 72, 82, // grand_master
  288.             85, 88, 91, 94, 98,
  289.             102,106,110,115,125,// perfect_master
  290.             125,   
  291.     };
  292.     return INTERNATIONAL_SKILL_POWERS[level];
  293. }
  294.  
  295. const char* LocaleService_GetSecurityKey()
  296. {
  297.     return __SECURITY_KEY_STRING__.c_str();
  298. }
  299.  
  300. // CHEONMA
  301. void LocaleService_SetCHEONMA(bool isEnable)
  302. {
  303.     IS_CHEONMA = isEnable;
  304. }
  305.  
  306. bool LocaleService_IsCHEONMA()
  307. {
  308.     return LocaleService_IsYMIR();
  309. }
  310.  
  311. // END_OF_CHEONMA
  312.  
  313. #if defined(LOCALE_SERVICE_EUROPE) || defined(LOCALE_SERVICE_BRAZIL) || defined(LOCALE_SERVICE_CANADA) || defined(LOCALE_SERVICE_SINGAPORE) || defined(LOCALE_SERVICE_VIETNAM) || defined(LOCALE_SERVICE_TAIWAN) || defined(LOCALE_SERVICE_NEWCIBN)
  314. #define _LSS_USE_LOCALE_CFG         1
  315. #define _LSS_SERVICE_NAME           LSS_EUROPE
  316. #elif defined(LOCALE_SERVICE_ITALY)
  317. #define _LSS_SERVICE_NAME           LSS_ITALY
  318. #define _LSS_SERVICE_CODEPAGE       CP_LATIN
  319. #define _LSS_SERVICE_LOCALE_NAME    "it"
  320. #define _LSS_SERVICE_LOCALE_PATH    "locale/it"
  321. #elif defined(LOCALE_SERVICE_ENGLISH)
  322. #define _LSS_SERVICE_NAME           LSS_ENGLISH
  323. #define _LSS_SERVICE_CODEPAGE       CP_LATIN
  324. #define _LSS_SERVICE_LOCALE_NAME    "english"
  325. #define _LSS_SERVICE_LOCALE_PATH    "locale/english"
  326. #elif defined(LOCALE_SERVICE_JAPAN)
  327. #define _LSS_SERVICE_NAME           LSS_JAPAN
  328. #define _LSS_SERVICE_CODEPAGE       CP_JAPANESE
  329. #define _LSS_SERVICE_LOCALE_NAME    "japan"
  330. #define _LSS_SERVICE_LOCALE_PATH    "locale/japan"
  331. #elif defined(LOCALE_SERVICE_YMIR)
  332. #define _LSS_SERVICE_NAME           LSS_YMIR
  333. #define _LSS_SERVICE_CODEPAGE       CP_HANGUL
  334. #define _LSS_SERVICE_LOCALE_NAME    "ymir"
  335. #define _LSS_SERVICE_LOCALE_PATH    "locale/ymir"
  336. #elif defined(LOCALE_SERVICE_HONGKONG)
  337. #define _LSS_SERVICE_NAME           LSS_HONGKONG
  338. #define _LSS_SERVICE_CODEPAGE       CP_CHINESE_TRAD
  339. #define _LSS_SERVICE_LOCALE_NAME    "hongkong"
  340. #define _LSS_SERVICE_LOCALE_PATH    "locale/hongkong"
  341. #elif defined(LOCALE_SERVICE_TAIWAN)
  342. #define _LSS_SERVICE_NAME           LSS_TAIWAN
  343. #define _LSS_SERVICE_CODEPAGE       CP_CHINESE_TRAD
  344. #define _LSS_SERVICE_LOCALE_NAME    "taiwan"
  345. #define _LSS_SERVICE_LOCALE_PATH    "locale/taiwan"
  346. #elif defined(LOCALE_SERVICE_NEWCIBN)
  347. #define _LSS_SERVICE_NAME           LSS_NEWCIBN
  348. #define _LSS_SERVICE_CODEPAGE       CP_CHINESE_SIMPLE
  349. #define _LSS_SERVICE_LOCALE_NAME    "newcibn"
  350. #define _LSS_SERVICE_LOCALE_PATH    "locale/newcibn"
  351. #endif
  352.  
  353. #if defined(_LSS_USE_LOCALE_CFG)
  354. #if defined(_LSS_SERVICE_NAME)
  355. const char* LocaleService_GetName()             { return _LSS_SERVICE_NAME;}
  356. #else
  357. const char* LocaleService_GetName()             { return MULTI_LOCALE_SERVICE; }
  358. #endif
  359. unsigned int LocaleService_GetCodePage()        { return MULTI_LOCALE_CODE; }
  360. const char* LocaleService_GetLocaleName()       { return MULTI_LOCALE_NAME; }
  361. const char* LocaleService_GetLocalePath()       { return MULTI_LOCALE_PATH; }
  362. #elif defined(_LSS_SERVICE_NAME)
  363. const char* LocaleService_GetName()             { return _LSS_SERVICE_NAME;}
  364. unsigned int LocaleService_GetCodePage()        { return _LSS_SERVICE_CODEPAGE; }
  365. const char* LocaleService_GetLocaleName()       { return _LSS_SERVICE_LOCALE_NAME; }
  366. const char* LocaleService_GetLocalePath()       { return _LSS_SERVICE_LOCALE_PATH; }
  367. #endif
  368.  
  369. void LocaleService_ForceSetLocale(const char* name, const char* localePath)
  370. {
  371.     strcpy(MULTI_LOCALE_NAME, name);
  372.     strcpy(MULTI_LOCALE_PATH, localePath);
  373.  
  374.     // ±âÁ¸ õ¸¶ ¼­¹ö·Î Á¢¼Ó½Ã¿¡´Â security key º¯°æ (WE ¹öÀü Ŭ¶ó·Î õ¸¶¼­¹ö Á¢¼ÓÇϱâ À§ÇÔ)
  375.     if (0 == stricmp(name, "ymir"))
  376.         __SECURITY_KEY_STRING__ = "testtesttesttest";
  377.     if (0 == stricmp(name, "we_korea"))
  378.         __SECURITY_KEY_STRING__ = "1234abcd5678efgh";
  379. }
  380.  
  381. #if defined(LOCALE_SERVICE_GLOBAL)
  382. struct SLOCALEDATA
  383. {
  384.     const char* szServiceName;
  385.     const char* szLocaleName;
  386.     WORD        wCodePage;
  387.     const char* szSecurityKey;
  388. } gs_stLocaleData[] = {
  389.     { LSS_YMIR,     "ymir",         949,    "testtesttesttest"  },      // Korea
  390.     { LSS_EUROPE,   "de",           1252,   "1234abcd5678efgh"  },      // GameForge (Germany)
  391.     { LSS_EUROPE,   "en",           1252,   "1234abcd5678efgh"  },      // GameForge (United Kingdom)
  392.     { LSS_EUROPE,   "us",           1252,   "1234abcd5678efgh"  },      // GameForge (USA)
  393.     { LSS_EUROPE,   "es",           1252,   "1234abcd5678efgh"  },      // GameForge (Spain)
  394.     { LSS_EUROPE,   "it",           1252,   "1234abcd5678efgh"  },      // GameForge (Italy)
  395.     { LSS_EUROPE,   "fr",           1252,   "1234abcd5678efgh"  },      // GameForge (France)
  396.     { LSS_EUROPE,   "pt",           1252,   "1234abcd5678efgh"  },      // GameForge (Portugal)
  397.     { LSS_EUROPE,   "tr",           1253,   "1234abcd5678efgh"  },      // GameForge (Greece)
  398.     { LSS_EUROPE,   "pl",           1250,   "1234abcd5678efgh"  },      // GameForge (Poland)
  399.     { LSS_EUROPE,   "tr",           1254,   "1234abcd5678efgh"  },      // GameForge (Turkey)
  400.     { LSS_EUROPE,   "dk",           1252,   "1234abcd5678efgh"  },      // GameForge (Demmark)
  401.     { LSS_EUROPE,   "ae",           1256,   "1234abcd5678efgh"  },      // GameForge (United Arab Emirate)
  402.     { LSS_EUROPE,   "mx",           1252,   "1234abcd5678efgh"  },      // GameForge (Mexico)
  403.     { LSS_EUROPE,   "nl",           1252,   "1234abcd5678efgh"  },      // GameForge (Netherlands)
  404.     { LSS_EUROPE,   "cz",           1252,   "1234abcd5678efgh"  },      // GameForge (Czech Republic)
  405.     { LSS_EUROPE,   "ru",           1251,   "1234abcd5678efgh"  },      // GameForge (Russian Federation)
  406.     { LSS_EUROPE,   "hu",           1250,   "1234abcd5678efgh"  },      // GameForge (Hungary)
  407.     { LSS_EUROPE,   "ro",           1250,   "1234abcd5678efgh"  },      // GameForge (Romania)
  408.     { LSS_EUROPE,   "ca",           1252,   "testtesttesttest"  },      // Z8Games (Canada)
  409.     { LSS_EUROPE,   "sg",           1252,   "testtesttesttest"  },      // TEC (Singapore)
  410.     { LSS_JAPAN,    "japan",        932,    "testtesttesttest"  },      // Japan
  411.     { LSS_EUROPE,   "br",           1252,   "testtesttesttest"  },      // OnGame (Brazil)
  412.     { LSS_HONGKONG, "hongkong",     950,    "testtesttesttest"  },      // HongKong & Taiwan
  413.     { LSS_NEWCIBN,  "newcibn",      936,    "testtesttesttest"  },      // CIBN (Free world)
  414.     { LSS_ENGLISH,  "english",      949,    "testtesttesttest"  },      // English (Obsoleted)
  415.     { LSS_YMIR,     "kr",           949,    "testtesttesttest"  },      // Korea (Obsoleted)
  416.     { NULL,         NULL,           0,      "testtesttesttest"  }
  417. };
  418.  
  419. const char* LocaleService_GetName()
  420. {
  421.     return MULTI_LOCALE_SERVICE;
  422. }
  423.  
  424. unsigned int LocaleService_GetCodePage()
  425. {
  426.     return MULTI_LOCALE_CODE;
  427. }
  428.  
  429. const char* LocaleService_GetLocaleName()
  430. {
  431.     return MULTI_LOCALE_NAME;
  432. }
  433.  
  434. const char* LocaleService_GetLocalePath()
  435. {
  436.     return MULTI_LOCALE_PATH;
  437. }
  438.  
  439. static int gs_iLocale = -1;
  440.  
  441. LRESULT CALLBACK SelectDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
  442. {
  443.     switch( uMsg ) {
  444.     case WM_INITDIALOG : {
  445.         char szLocalePath[256], szDisplayName[256];
  446.         for(int i=0; gs_stLocaleData[i].szServiceName; i++ ) {
  447.             sprintf(szLocalePath, "locale/%s/item_proto", gs_stLocaleData[i].szLocaleName);
  448.             if( CEterPackManager::Instance().isExist(szLocalePath)) {
  449.                 sprintf(szDisplayName, "%s (%s, %d)", gs_stLocaleData[i].szLocaleName, gs_stLocaleData[i].szServiceName, gs_stLocaleData[i].wCodePage);
  450.                 int iIndex = ListBox_AddString(GetDlgItem(hDlg, IDC_LOCALE_LIST), szDisplayName);
  451.                 ListBox_SetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iIndex, i);
  452.             }
  453.         }
  454.         return TRUE;
  455.         }
  456.     case WM_COMMAND :
  457.         switch( LOWORD( wParam ) ) {
  458.         case IDC_LOCALE_LIST: {
  459.             int iSelected = ListBox_GetCurSel(GetDlgItem(hDlg, IDC_LOCALE_LIST));
  460.             switch(HIWORD(wParam)) {
  461.             case LBN_SELCHANGE :
  462.                 gs_iLocale = ListBox_GetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iSelected);
  463.                 break;
  464.             case LBN_DBLCLK :
  465.                 gs_iLocale = ListBox_GetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iSelected);
  466.                 ::EndDialog(hDlg, 0);
  467.                 break;
  468.             }
  469.             break;
  470.             }
  471.         case IDC_START: {
  472.             ::EndDialog(hDlg, 0);
  473.             break;
  474.             }
  475.         case IDC_EXIT: {
  476.             gs_iLocale = -1;
  477.             ::EndDialog(hDlg, 0);
  478.             break;
  479.             }
  480.         }
  481.         return FALSE;
  482.     }
  483.     return FALSE;
  484. }
  485.  
  486. bool LocaleService_LoadGlobal(HINSTANCE hInstance)
  487. {
  488.     int nFoundLocales = 0;
  489.     char szLocalePath[256];
  490.  
  491.     for(int i=0; gs_stLocaleData[i].szServiceName; i++ ) {
  492.         sprintf(szLocalePath, "locale/%s/item_proto", gs_stLocaleData[i].szLocaleName);
  493.         if( CEterPackManager::Instance().isExist(szLocalePath)) {
  494.             nFoundLocales++;
  495.             if(gs_iLocale == -1)
  496.                 gs_iLocale = i;
  497.         }
  498.     }
  499.     if (gs_iLocale < 0)
  500.         return false;
  501.     if(nFoundLocales > 1)
  502.         ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_SELECT_LOCALE), NULL, (DLGPROC) SelectDlgProc);
  503.     if (gs_iLocale < 0)
  504.         return false;
  505.     strcpy(MULTI_LOCALE_SERVICE, gs_stLocaleData[gs_iLocale].szServiceName);
  506.     strcpy(MULTI_LOCALE_NAME, gs_stLocaleData[gs_iLocale].szLocaleName);
  507.     sprintf(MULTI_LOCALE_PATH, "locale/%s", gs_stLocaleData[gs_iLocale].szLocaleName);
  508.     MULTI_LOCALE_CODE = gs_stLocaleData[gs_iLocale].wCodePage;
  509.     if(gs_stLocaleData[gs_iLocale].szSecurityKey)
  510.         __SECURITY_KEY_STRING__ = gs_stLocaleData[gs_iLocale].szSecurityKey;
  511.     return true;
  512. }
  513. #else
  514. bool LocaleService_LoadGlobal(HINSTANCE hInstance)
  515. {
  516.     return false;
  517. }
  518. #endif
  519.  
  520. bool LocaleService_IsYMIR()     { return (stricmp( LocaleService_GetName(), LSS_YMIR ) == 0) || (stricmp( LocaleService_GetLocaleName(), "ymir" ) == 0);    }
  521. bool LocaleService_IsJAPAN()    { return (stricmp( LocaleService_GetName(), LSS_JAPAN ) == 0) || (stricmp( LocaleService_GetLocaleName(), "japan" ) == 0);  }
  522. bool LocaleService_IsENGLISH()  { return (stricmp( LocaleService_GetName(), LSS_ENGLISH ) == 0);    }
  523. bool LocaleService_IsEUROPE()   { return (stricmp( LocaleService_GetName(), LSS_EUROPE ) == 0);     }
  524. bool LocaleService_IsHONGKONG() { return (stricmp( LocaleService_GetName(), LSS_HONGKONG ) == 0);   }
  525. bool LocaleService_IsTAIWAN()   { return (stricmp( LocaleService_GetName(), LSS_TAIWAN ) == 0);     }
  526. bool LocaleService_IsNEWCIBN()  { return (stricmp( LocaleService_GetName(), LSS_NEWCIBN ) == 0);    }
  527.  
  528. #if defined(LOCALE_SERVICE_WE_JAPAN)
  529. BOOL LocaleService_IsLeadByte( const char chByte )
  530. {
  531.     return ShiftJIS_IsLeadByte( chByte );
  532. }
  533.  
  534. int LocaleService_StringCompareCI( LPCSTR szStringLeft, LPCSTR szStringRight, size_t sizeLength )
  535. {
  536.     return ShiftJIS_StringCompareCI( szStringLeft, szStringRight, sizeLength );
  537. }
  538. #else
  539. BOOL LocaleService_IsLeadByte( const char chByte )
  540. {
  541.     return (((unsigned char) chByte) & 0x80) != 0;
  542. }
  543.  
  544. int LocaleService_StringCompareCI( LPCSTR szStringLeft, LPCSTR szStringRight, size_t sizeLength )
  545. {
  546.     return strnicmp( szStringLeft, szStringRight, sizeLength );
  547. }
  548. #endif
  549.  
  550.  
  551. #ifdef USE_OPENID
  552.  
  553. std::string __OPENID_AUTH_KEY_STRING__;
  554. int openid_test = 0;
  555.  
  556. void LocaleService_SetOpenIDAuthKey(const char *authKey)
  557. {
  558.      __OPENID_AUTH_KEY_STRING__ = authKey;
  559.  
  560.      return;
  561. }
  562.  
  563. const char* LocaleService_GetOpenIDAuthKey()
  564. {
  565.     return __OPENID_AUTH_KEY_STRING__.c_str();
  566. }
  567.  
  568. #endif /* USE_OPENID */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement