Jump to content

Clawders

Member
  • Content Count

    13
  • Joined

  • Last visited

  • Yangs

    0 [ Donate ]

Community Reputation

0 Neutral

About Clawders

  • Rank
    Neutral

Informations

  • Gender
    Male

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Error code In file included from config.cpp:22: check_server.h:11: error: ISO C++ forbids declaration of 'FORCEINLINE' with no type check_server.h:11: error: expected ';' before 'void' check_server.h:16: error: expected `;' before 'static' check_server.h:16: error: ISO C++ forbids declaration of 'FORCEINLINE' with no type check_server.h:16: error: expected ';' before 'bool' config.cpp:1443: error: expected `;' at end of input config.cpp:1443: error: expected `}' at end of input config.cpp:1443: error: expected unqualified-id at end of input config.cpp file #include "stdafx.h" #include <sstream> #ifndef __WIN32__ #include <ifaddrs.h> #endif #include "constants.h" #include "utils.h" #include "log.h" #include "desc.h" #include "desc_manager.h" #include "item_manager.h" #include "p2p.h" #include "char.h" #include "ip_ban.h" #include "war_map.h" #include "locale_service.h" #include "config.h" #include "dev_log.h" #include "db.h" #include "skill_power.h" using std::string; BYTE gTimeToStartPvP = 5; BYTE g_bChannel = 0; WORD mother_port = 50080; int passes_per_sec = 25; WORD db_port = 0; WORD p2p_port = 50900; char db_addr[ADDRESS_MAX_LEN + 1]; int save_event_second_cycle = passes_per_sec * 120; // 3şĐ int ping_event_second_cycle = passes_per_sec * 60; bool g_bNoMoreClient = false; bool g_bNoRegen = false; bool g_bNoPasspod = false; // TRAFFIC_PROFILER bool g_bTrafficProfileOn = false; DWORD g_dwTrafficProfileFlushCycle = 3600; // END_OF_TRAFFIC_PROFILER int test_server = 0; int speed_server = 0; #ifdef __AUCTION__ int auction_server = 0; #endif bool distribution_test_server = false; bool china_event_server = false; bool guild_mark_server = true; BYTE guild_mark_min_level = 3; bool no_wander = false; int g_iUserLimit = 32768; char g_szPublicIP[16] = "0"; char g_szInternalIP[16] = "0"; bool g_bSkillDisable = false; int g_iFullUserCount = 1200; int g_iBusyUserCount = 650; //Canada //int g_iFullUserCount = 600; //int g_iBusyUserCount = 350; //Brazil //int g_iFullUserCount = 650; //int g_iBusyUserCount = 450; bool g_bEmpireWhisper = true; BYTE g_bAuthServer = false; bool g_bCheckClientVersion = true; string g_stClientVersion = "1215955205"; BYTE g_bBilling = false; string g_stAuthMasterIP; WORD g_wAuthMasterPort = 0; static std::set<DWORD> s_set_dwFileCRC; static std::set<DWORD> s_set_dwProcessCRC; string g_stHostname = ""; string g_table_postfix = ""; string g_stQuestDir = "./quest"; //string g_stQuestObjectDir = "./quest/object"; string g_stDefaultQuestObjectDir = "./quest/object"; std::set<string> g_setQuestObjectDir; std::vector<std::string> g_stAdminPageIP; std::string g_stAdminPagePassword = "SHOWMETHEMONEY"; string g_stBlockDate = "30000705"; extern string g_stLocale; char teen_addr[ADDRESS_MAX_LEN + 1] = {0}; WORD teen_port = 0; int SPEEDHACK_LIMIT_COUNT = 50; int SPEEDHACK_LIMIT_BONUS = 80; int g_iSyncHackLimitCount = 10; //˝Ăľß = VIEW_RANGE + VIEW_BONUS_RANGE //VIEW_BONUSE_RANGE : Ŭ¶óŔĚľđĆ®żÍ ˝Ăľß Ăł¸®żˇĽ­łĘą« µü ¶łľîÁú°ćżě ą®Á¦°ˇ ąß»ýÇŇĽöŔÖľî 500CMŔÇ ż©şĐŔ» Ç×»óÁŘ´Ů. int VIEW_RANGE = 5000; int VIEW_BONUS_RANGE = 500; int g_server_id = 0; string g_strWebMallURL = "www.arsus2.com"; unsigned int g_uiSpamBlockDuration = 60 * 15; // ±âş» 15şĐ unsigned int g_uiSpamBlockScore = 100; // ±âş» 100Áˇ unsigned int g_uiSpamReloadCycle = 60 * 10; // ±âş» 10şĐ bool g_bCheckMultiHack = true; int g_iSpamBlockMaxLevel = 10; void LoadStateUserCount(); void LoadValidCRCList(); bool LoadClientVersion(); bool g_protectNormalPlayer = false; // ąüąýŔÚ°ˇ "ĆňČ­¸đµĺ" ŔÎ ŔĎąÝŔŻŔú¸¦ °ř°ÝÇĎÁö ¸řÇÔ bool g_noticeBattleZone = false; // Á߸łÁö´ëżˇ ŔÔŔĺÇĎ¸é ľČł»¸ŢĽĽÁö¸¦ ľË·ÁÁÜ bool isHackShieldEnable = false; int HackShield_FirstCheckWaitTime = passes_per_sec * 30; int HackShield_CheckCycleTime = passes_per_sec * 180; bool bXTrapEnabled = false; bool v_syslog_notice = false; bool v_syschat_notice = false; bool v_ban_waithack = false; int gPlayerMaxLevel = 120; int gSpecialShout = 0; int MasterGhostChat = 0; int MasterColorEmpire = 0; int MasterLevelChat = 0; int PlayerColorEmpire = 0; int PlayerLevelChat = 0; bool g_BlockCharCreation = false; //OPENID int openid_server = 0; char openid_host[256]; char openid_uri[256]; bool g_bEnableNewKingdomForWolfman = true; // Wolfman character is born in self kingdom if you are disable this command. bool is_string_true(const char * string) { bool result = 0; if (isnhdigit(*string)) { str_to_number(result, string); return result > 0 ? true : false; } else if (LOWER(*string) == 't') return true; else return false; } static std::set<int> s_set_map_allows; bool map_allow_find(int index) { if (g_bAuthServer) return false; if (s_set_map_allows.find(index) == s_set_map_allows.end()) return false; return true; } void map_allow_log() { std::set<int>::iterator i; for (i = s_set_map_allows.begin(); i != s_set_map_allows.end(); ++i) sys_log(0, "MAP_ALLOW: %d", *i); } void map_allow_add(int index) { if (map_allow_find(index) == true) { fprintf(stdout, "!!! FATAL ERROR !!! multiple MAP_ALLOW setting!!\n"); exit(1); } fprintf(stdout, "MAP ALLOW %d\n", index); s_set_map_allows.insert(index); } void map_allow_copy(long * pl, int size) { int iCount = 0; std::set<int>::iterator it = s_set_map_allows.begin(); while (it != s_set_map_allows.end()) { int i = *(it++); *(pl++) = i; if (++iCount > size) break; } } static void FN_add_adminpageIP(char *line) { char *last; const char *delim = " \t\r\n"; char *v = strtok_r(line, delim, &last); while (v) { g_stAdminPageIP.push_back(v); v = strtok_r(NULL, delim, &last); } } static void FN_log_adminpage() { itertype(g_stAdminPageIP) iter = g_stAdminPageIP.begin(); while (iter != g_stAdminPageIP.end()) { dev_log(LOG_DEB0, "ADMIN_PAGE_IP = %s", (*iter).c_str()); ++iter; } dev_log(LOG_DEB0, "ADMIN_PAGE_PASSWORD = %s", g_stAdminPagePassword.c_str()); } bool GetIPInfo() { struct ifaddrs* ifaddrp = NULL; if (0 != getifaddrs(&ifaddrp)) return false; for( struct ifaddrs* ifap=ifaddrp ; NULL != ifap ; ifap = ifap->ifa_next ) { struct sockaddr_in * sai = (struct sockaddr_in *) ifap->ifa_addr; if (!ifap->ifa_netmask || sai->sin_addr.s_addr == 0 || sai->sin_addr.s_addr == 16777343) continue; char * netip = inet_ntoa(sai->sin_addr); if (g_szPublicIP[0] != '0') { strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP)); fprintf(stderr, "INTERNAL_IP: %s interface %s\n", netip, ifap->ifa_name); } else if (g_szPublicIP[0] == '0') { strlcpy(g_szPublicIP, netip, sizeof(g_szPublicIP)); fprintf(stderr, "PUBLIC_IP: %s interface %s\n", netip, ifap->ifa_name); } } } void config_init(const string& st_localeServiceName) { FILE *fp; char buf[256]; char token_string[256]; char value_string[256]; // LOCALE_SERVICE string st_configFileName; st_configFileName.reserve(32); st_configFileName = "CONFIG"; if (!st_localeServiceName.empty()) { st_configFileName += "."; st_configFileName += st_localeServiceName; } // END_OF_LOCALE_SERVICE if (!(fp = fopen(st_configFileName.c_str(), "r"))) { fprintf(stderr, "Can not open [%s]\n", st_configFileName.c_str()); exit(1); } if (!GetIPInfo()) { fprintf(stderr, "Can not get public ip address\n"); exit(1); } char db_host[2][64], db_user[2][64], db_pwd[2][64], db_db[2][64]; // ... ľĆ... db_port´Â ŔĚąĚ ŔִµĄ... ł×ŔĚąÖ ľîÂîÇŘľßÇÔ... int mysql_db_port[2]; for (int n = 0; n < 2; ++n) { *db_host[n] = '\0'; *db_user[n] = '\0'; *db_pwd[n]= '\0'; *db_db[n]= '\0'; mysql_db_port[n] = 0; } char log_host[64], log_user[64], log_pwd[64], log_db[64]; int log_port = 0; *log_host = '\0'; *log_user = '\0'; *log_pwd = '\0'; *log_db = '\0'; // DBżˇĽ­ ·ÎÄÉŔĎÁ¤ş¸¸¦ ĽĽĆĂÇϱâŔ§ÇŘĽ­´Â ´Ů¸Ą ĽĽĆĂ°Şş¸´Ů Ľ±ÇŕµÇľîĽ­ // DBÁ¤ş¸¸¸ ŔĐľîżÍ ·ÎÄÉŔĎ ĽĽĆĂŔ» ÇŃČÄ ´Ů¸Ą ĽĽĆĂŔ» Ŕűżë˝ĂÄŃľßÇŃ´Ů. // ŔĚŔŻ´Â ·ÎÄÉŔĎ°ü·ĂµČ ĂʱâČ­ ·çĆľŔĚ °÷°÷żˇ Á¸ŔçÇϱ⠶§ą®. bool isCommonSQL = false; bool isPlayerSQL = false; FILE* fpOnlyForDB; if (!(fpOnlyForDB = fopen(st_configFileName.c_str(), "r"))) { fprintf(stderr, "Can not open [%s]\n", st_configFileName.c_str()); exit(1); } while (fgets(buf, 256, fpOnlyForDB)) { parse_token(buf, token_string, value_string); TOKEN("BLOCK_LOGIN") { g_stBlockDate = value_string; } TOKEN("adminpage_ip") { FN_add_adminpageIP(value_string); //g_stAdminPageIP[0] = value_string; } TOKEN("adminpage_ip1") { FN_add_adminpageIP(value_string); //g_stAdminPageIP[0] = value_string; } TOKEN("adminpage_ip2") { FN_add_adminpageIP(value_string); //g_stAdminPageIP[1] = value_string; } TOKEN("adminpage_ip3") { FN_add_adminpageIP(value_string); //g_stAdminPageIP[2] = value_string; } TOKEN("adminpage_password") { g_stAdminPagePassword = value_string; } TOKEN("hostname") { g_stHostname = value_string; fprintf(stdout, "HOSTNAME: %s\n", g_stHostname.c_str()); continue; } TOKEN("channel") { str_to_number(g_bChannel, value_string); continue; } TOKEN("player_sql") { const char * line = two_arguments(value_string, db_host[0], sizeof(db_host[0]), db_user[0], sizeof(db_user[0])); line = two_arguments(line, db_pwd[0], sizeof(db_pwd[0]), db_db[0], sizeof(db_db[0])); if (NULL != line[0]) { char buf[256]; one_argument(line, buf, sizeof(buf)); str_to_number(mysql_db_port[0], buf); } if (!*db_host[0] || !*db_user[0] || !*db_pwd[0] || !*db_db[0]) { fprintf(stderr, "PLAYER_SQL syntax: logsql <host user password db>\n"); exit(1); } char buf[1024]; snprintf(buf, sizeof(buf), "PLAYER_SQL: %s %s %s %s %d", db_host[0], db_user[0], db_pwd[0], db_db[0], mysql_db_port[0]); isPlayerSQL = true; continue; } TOKEN("common_sql") { const char * line = two_arguments(value_string, db_host[1], sizeof(db_host[1]), db_user[1], sizeof(db_user[1])); line = two_arguments(line, db_pwd[1], sizeof(db_pwd[1]), db_db[1], sizeof(db_db[1])); if (NULL != line[0]) { char buf[256]; one_argument(line, buf, sizeof(buf)); str_to_number(mysql_db_port[1], buf); } if (!*db_host[1] || !*db_user[1] || !*db_pwd[1] || !*db_db[1]) { fprintf(stderr, "COMMON_SQL syntax: logsql <host user password db>\n"); exit(1); } char buf[1024]; snprintf(buf, sizeof(buf), "COMMON_SQL: %s %s %s %s %d", db_host[1], db_user[1], db_pwd[1], db_db[1], mysql_db_port[1]); isCommonSQL = true; continue; } TOKEN("log_sql") { const char * line = two_arguments(value_string, log_host, sizeof(log_host), log_user, sizeof(log_user)); line = two_arguments(line, log_pwd, sizeof(log_pwd), log_db, sizeof(log_db)); if (NULL != line[0]) { char buf[256]; one_argument(line, buf, sizeof(buf)); str_to_number(log_port, buf); } if (!*log_host || !*log_user || !*log_pwd || !*log_db) { fprintf(stderr, "LOG_SQL syntax: logsql <host user password db>\n"); exit(1); } char buf[1024]; snprintf(buf, sizeof(buf), "LOG_SQL: %s %s %s %s %d", log_host, log_user, log_pwd, log_db, log_port); continue; } //OPENID TOKEN("WEB_AUTH") { const char * line = two_arguments(value_string, openid_host, sizeof(openid_host), openid_uri, sizeof(openid_uri)); if (!*openid_host || !*openid_uri) { fprintf(stderr, "WEB_AUTH syntax error (ex: WEB_AUTH <host(metin2.co.kr) uri(/kyw/gameauth.php)>\n"); exit(1); } char buf[1024]; openid_server = 1; snprintf(buf, sizeof(buf), "WEB_AUTH: %s %s", openid_host, openid_uri); continue; } } //Ăł¸®°ˇ łˇłµŔ¸´Ď ĆÄŔĎŔ» ´ÝŔÚ. fclose(fpOnlyForDB); // CONFIG_SQL_INFO_ERROR if (!isCommonSQL) { puts("LOAD_COMMON_SQL_INFO_FAILURE:"); puts(""); puts("CONFIG:"); puts("------------------------------------------------"); puts("COMMON_SQL: HOST USER PASSWORD DATABASE"); puts(""); exit(1); } if (!isPlayerSQL) { puts("LOAD_PLAYER_SQL_INFO_FAILURE:"); puts(""); puts("CONFIG:"); puts("------------------------------------------------"); puts("PLAYER_SQL: HOST USER PASSWORD DATABASE"); puts(""); exit(1); } // Common DB °ˇ Locale Á¤ş¸¸¦ °ˇÁö°í Ŕֱ⠶§ą®żˇ °ˇŔĺ ¸ŐŔú Á˘ĽÓÇŘľß ÇŃ´Ů. AccountDB::instance().Connect(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1]); if (false == AccountDB::instance().IsConnected()) { fprintf(stderr, "cannot start server while no common sql connected\n"); exit(1); } fprintf(stdout, "CommonSQL connected\n"); // ·ÎÄÉŔĎ Á¤ş¸¸¦ °ˇÁ®żŔŔÚ // <°ć°í> Äő¸®ą®żˇ Ŕý´ë Á¶°Çą®(WHERE) ´ŢÁö ¸¶ĽĽżä. (´Ů¸Ą ÁöżŞżˇĽ­ ą®Á¦°ˇ »ý±ćĽö ŔÖ˝Ŕ´Ď´Ů) { char szQuery[512]; snprintf(szQuery, sizeof(szQuery), "SELECT mKey, mValue FROM locale"); std::auto_ptr<SQLMsg> pMsg(AccountDB::instance().DirectQuery(szQuery)); if (pMsg->Get()->uiNumRows == 0) { fprintf(stderr, "COMMON_SQL: DirectQuery failed : %s\n", szQuery); exit(1); } MYSQL_ROW row; while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult))) { // ·ÎÄÉŔĎ ĽĽĆĂ if (strcasecmp(row[0], "LOCALE") == 0) { if (LocaleService_Init(row[1]) == false) { fprintf(stderr, "COMMON_SQL: invalid locale key %s\n", row[1]); exit(1); } } } } // ·ÎÄÉŔĎ Á¤ş¸¸¦ COMMON SQLżˇ ĽĽĆĂÇŘÁŘ´Ů. // Âü°í·Î g_stLocale Á¤ş¸´Â LocaleService_Init() ł»şÎżˇĽ­ ĽĽĆõȴŮ. fprintf(stdout, "Setting DB to locale %s\n", g_stLocale.c_str()); AccountDB::instance().SetLocale(g_stLocale); AccountDB::instance().ConnectAsync(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1], g_stLocale.c_str()); // Player DB Á˘ĽÓ DBManager::instance().Connect(db_host[0], mysql_db_port[0], db_user[0], db_pwd[0], db_db[0]); if (!DBManager::instance().IsConnected()) { fprintf(stderr, "PlayerSQL.ConnectError\n"); exit(1); } fprintf(stdout, "PlayerSQL connected\n"); if (false == g_bAuthServer) // ŔÎÁő Ľ­ąö°ˇ ľĆ´Ň °ćżě { // Log DB Á˘ĽÓ LogManager::instance().Connect(log_host, log_port, log_user, log_pwd, log_db); if (!LogManager::instance().IsConnected()) { fprintf(stderr, "LogSQL.ConnectError\n"); exit(1); } fprintf(stdout, "LogSQL connected\n"); LogManager::instance().BootLog(g_stHostname.c_str(), g_bChannel); } // SKILL_POWER_BY_LEVEL // ˝şĆ®¸µ şń±łŔÇ ą®Á¦·Î ŔÎÇŘĽ­ AccountDB::instance().SetLocale(g_stLocale) ČÄşÎĹÍ ÇŃ´Ů. // ą°·Đ ±ął»´Â ş°·Î ą®Á¦°ˇ ľČµČ´Ů(Çؿܰˇ ą®Á¦) { char szQuery[256]; snprintf(szQuery, sizeof(szQuery), "SELECT mValue FROM locale WHERE mKey='SKILL_POWER_BY_LEVEL'"); std::auto_ptr<SQLMsg> pMsg(AccountDB::instance().DirectQuery(szQuery)); if (pMsg->Get()->uiNumRows == 0) { fprintf(stderr, "[SKILL_PERCENT] Query failed: %s", szQuery); exit(1); } MYSQL_ROW row; row = mysql_fetch_row(pMsg->Get()->pSQLResult); const char * p = row[0]; int cnt = 0; char num[128]; int aiBaseSkillPowerByLevelTable[SKILL_MAX_LEVEL+1]; fprintf(stdout, "SKILL_POWER_BY_LEVEL %s\n", p); while (*p != '\0' && cnt < (SKILL_MAX_LEVEL + 1)) { p = one_argument(p, num, sizeof(num)); aiBaseSkillPowerByLevelTable[cnt++] = atoi(num); //fprintf(stdout, "%d %d\n", cnt - 1, aiBaseSkillPowerByLevelTable[cnt - 1]); if (*p == '\0') { if (cnt != (SKILL_MAX_LEVEL + 1)) { fprintf(stderr, "[SKILL_PERCENT] locale table has not enough skill information! (count: %d query: %s)", cnt, szQuery); exit(1); } fprintf(stdout, "SKILL_POWER_BY_LEVEL: Done! (count %d)\n", cnt); break; } } // ÁľÁ·ş° ˝şĹł ĽĽĆĂ for (int job = 0; job < JOB_MAX_NUM * 2; ++job) { snprintf(szQuery, sizeof(szQuery), "SELECT mValue from locale where mKey='SKILL_POWER_BY_LEVEL_TYPE%d' ORDER BY CAST(mValue AS unsigned)", job); std::auto_ptr<SQLMsg> pMsg(AccountDB::instance().DirectQuery(szQuery)); // ĽĽĆĂŔĚ ľČµÇľîŔÖŔ¸¸é ±âş»Ĺ×ŔĚşíŔ» »çżëÇŃ´Ů. if (pMsg->Get()->uiNumRows == 0) { CTableBySkill::instance().SetSkillPowerByLevelFromType(job, aiBaseSkillPowerByLevelTable); continue; } row = mysql_fetch_row(pMsg->Get()->pSQLResult); cnt = 0; p = row[0]; int aiSkillTable[SKILL_MAX_LEVEL + 1]; fprintf(stdout, "SKILL_POWER_BY_JOB %d %s\n", job, p); while (*p != '\0' && cnt < (SKILL_MAX_LEVEL + 1)) { p = one_argument(p, num, sizeof(num)); aiSkillTable[cnt++] = atoi(num); //fprintf(stdout, "%d %d\n", cnt - 1, aiBaseSkillPowerByLevelTable[cnt - 1]); if (*p == '\0') { if (cnt != (SKILL_MAX_LEVEL + 1)) { fprintf(stderr, "[SKILL_PERCENT] locale table has not enough skill information! (count: %d query: %s)", cnt, szQuery); exit(1); } fprintf(stdout, "SKILL_POWER_BY_JOB: Done! (job: %d count: %d)\n", job, cnt); break; } } CTableBySkill::instance().SetSkillPowerByLevelFromType(job, aiSkillTable); } } // END_SKILL_POWER_BY_LEVEL // LOG_KEEP_DAYS_EXTEND log_set_expiration_days(2); // END_OF_LOG_KEEP_DAYS_EXTEND while (fgets(buf, 256, fp)) { parse_token(buf, token_string, value_string); TOKEN("empire_whisper") { bool b_value = 0; str_to_number(b_value, value_string); g_bEmpireWhisper = !!b_value; continue; } TOKEN("SPECIAL_SHOUT") { str_to_number(gSpecialShout, value_string); //printf("SPECIAL_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("GM_GHOST_SHOUT") { str_to_number(MasterGhostChat, value_string); //printf("GM_GHOST_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("GM_EMPIRE_SHOUT") { str_to_number(MasterColorEmpire, value_string); //printf("GM_EMPIRE_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("GM_LEVEL_SHOUT") { str_to_number(MasterLevelChat, value_string); //printf("GM_LEVEL_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("PLAYER_EMPIRE_SHOUT") { str_to_number(PlayerColorEmpire, value_string); //printf("PLAYER_EMPIRE_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("PLAYER_LEVEL_SHOUT") { str_to_number(PlayerLevelChat, value_string); //printf("PLAYER_LEVEL_SHOUT CONFIG Adauga in config\n"); continue; } TOKEN("mark_server") { guild_mark_server = is_string_true(value_string); continue; } TOKEN("mark_min_level") { str_to_number(guild_mark_min_level, value_string); guild_mark_min_level = MINMAX(0, guild_mark_min_level, GUILD_MAX_LEVEL); continue; } TOKEN("port") { str_to_number(mother_port, value_string); continue; } TOKEN("log_keep_days") { int i = 0; str_to_number(i, value_string); log_set_expiration_days(MINMAX(1, i, 90)); continue; } TOKEN("passes_per_sec") { str_to_number(passes_per_sec, value_string); continue; } TOKEN("p2p_port") { str_to_number(p2p_port, value_string); continue; } TOKEN("db_port") { str_to_number(db_port, value_string); continue; } TOKEN("db_addr") { strlcpy(db_addr, value_string, sizeof(db_addr)); for (int n =0; n < ADDRESS_MAX_LEN; ++n) { if (db_addr[n] == ' ') db_addr[n] = '\0'; } continue; } TOKEN("save_event_second_cycle") { int cycle = 0; str_to_number(cycle, value_string); save_event_second_cycle = cycle * passes_per_sec; continue; } TOKEN("ping_event_second_cycle") { int cycle = 0; str_to_number(cycle, value_string); ping_event_second_cycle = cycle * passes_per_sec; continue; } TOKEN("table_postfix") { g_table_postfix = value_string; continue; } TOKEN("test_server") { printf("\033[32m-----------------------------------------------\n"); printf("\033[32mBEST Production GAME VERSION: 40250 (BestYapim)\n"); printf("\033[32m-----------------------------------------------\n"); str_to_number(test_server, value_string); continue; } TOKEN("speed_server") { printf("\033[32m-----------------------------------------------\n"); printf("\033[32mBEST Production GAME VERSION: 40250 (BestYapim)\n"); printf("\033[32m-----------------------------------------------\n"); str_to_number(speed_server, value_string); continue; } #ifdef __AUCTION__ TOKEN("auction_server") { printf("\033[32m-----------------------------------------------\n"); printf("\033[32mBEST Production GAME VERSION: 40250 (BestYapim)\n"); printf("\033[32m-----------------------------------------------\n"); str_to_number(auction_server, value_string); continue; } #endif TOKEN("distribution_test_server") { str_to_number(distribution_test_server, value_string); continue; } TOKEN("china_event_server") { str_to_number(china_event_server, value_string); continue; } TOKEN("shutdowned") { g_bNoMoreClient = true; continue; } TOKEN("no_regen") { g_bNoRegen = true; continue; } TOKEN("traffic_profile") { g_bTrafficProfileOn = true; continue; } TOKEN("map_allow") { char * p = value_string; string stNum; for (; *p; p++) { if (isnhspace(*p)) { if (stNum.length()) { int index = 0; str_to_number(index, stNum.c_str()); map_allow_add(index); stNum.clear(); } } else stNum += *p; } if (stNum.length()) { int index = 0; str_to_number(index, stNum.c_str()); map_allow_add(index); } continue; } TOKEN("no_wander") { no_wander = true; continue; } TOKEN("user_limit") { str_to_number(g_iUserLimit, value_string); continue; } TOKEN("skill_disable") { str_to_number(g_bSkillDisable, value_string); continue; } TOKEN("auth_server") { char szIP[32]; char szPort[32]; two_arguments(value_string, szIP, sizeof(szIP), szPort, sizeof(szPort)); if (!*szIP || (!*szPort && strcasecmp(szIP, "master"))) { fprintf(stderr, "AUTH_SERVER: syntax error: <ip|master> <port>\n"); exit(1); } g_bAuthServer = true; LoadBanIP("BANIP"); if (!strcasecmp(szIP, "master")) fprintf(stdout, "BEST SOURCE VERSION : 40250 \n"); else { g_stAuthMasterIP = szIP; str_to_number(g_wAuthMasterPort, szPort); fprintf(stdout, "AUTH_SERVER: master %s %u\n", g_stAuthMasterIP.c_str(), g_wAuthMasterPort); } continue; } TOKEN("billing") { g_bBilling = true; } TOKEN("quest_dir") { sys_log(0, "QUEST_DIR SETTING : %s", value_string); g_stQuestDir = value_string; } TOKEN("quest_object_dir") { //g_stQuestObjectDir = value_string; std::istringstream is(value_string); sys_log(0, "QUEST_OBJECT_DIR SETTING : %s", value_string); string dir; while (!is.eof()) { is >> dir; if (is.fail()) break; g_setQuestObjectDir.insert(dir); sys_log(0, "QUEST_OBJECT_DIR INSERT : %s", dir .c_str()); } } TOKEN("teen_addr") { strlcpy(teen_addr, value_string, sizeof(teen_addr)); for (int n =0; n < ADDRESS_MAX_LEN; ++n) { if (teen_addr[n] == ' ') teen_addr[n] = '\0'; } continue; } TOKEN("teen_port") { str_to_number(teen_port, value_string); } TOKEN("synchack_limit_count") { str_to_number(g_iSyncHackLimitCount, value_string); } TOKEN("speedhack_limit_count") { str_to_number(SPEEDHACK_LIMIT_COUNT, value_string); } TOKEN("speedhack_limit_bonus") { str_to_number(SPEEDHACK_LIMIT_BONUS, value_string); } TOKEN("server_id") { str_to_number(g_server_id, value_string); } TOKEN("mall_url") { g_strWebMallURL = value_string; } TOKEN("bind_ip") { strlcpy(g_szPublicIP, value_string, sizeof(g_szPublicIP)); } TOKEN("view_range") { str_to_number(VIEW_RANGE, value_string); } TOKEN("spam_block_duration") { str_to_number(g_uiSpamBlockDuration, value_string); } TOKEN("spam_block_score") { str_to_number(g_uiSpamBlockScore, value_string); g_uiSpamBlockScore = MAX(1, g_uiSpamBlockScore); } TOKEN("spam_block_reload_cycle") { str_to_number(g_uiSpamReloadCycle, value_string); g_uiSpamReloadCycle = MAX(60, g_uiSpamReloadCycle); // ĂÖĽŇ 1şĐ } TOKEN("check_multihack") { str_to_number(g_bCheckMultiHack, value_string); } TOKEN("spam_block_max_level") { str_to_number(g_iSpamBlockMaxLevel, value_string); } TOKEN("protect_normal_player") { str_to_number(g_protectNormalPlayer, value_string); } TOKEN("notice_battle_zone") { str_to_number(g_noticeBattleZone, value_string); } TOKEN("hackshield_enable") { int flag = 0; str_to_number(flag, value_string); //if (1 == flag && LC_IsEurope() ) if (1 == flag) { isHackShieldEnable = true; } } TOKEN("hackshield_first_check_time") { int secs = 30; str_to_number(secs, value_string); HackShield_FirstCheckWaitTime = passes_per_sec * secs; } TOKEN("hackshield_check_cycle_time") { int secs = 180; str_to_number(secs, value_string); HackShield_CheckCycleTime = passes_per_sec * secs; } TOKEN("xtrap_enable") { int flag = 0; str_to_number(flag, value_string); if (1 == flag ) { bXTrapEnabled = true; } } TOKEN("pk_protect_level") { str_to_number(PK_PROTECT_LEVEL, value_string); fprintf(stderr, "PK_PROTECT_LEVEL: %d", PK_PROTECT_LEVEL); } TOKEN("max_level") { str_to_number(gPlayerMaxLevel, value_string); gPlayerMaxLevel = MINMAX(1, gPlayerMaxLevel, PLAYER_MAX_LEVEL_CONST); fprintf(stderr, "PLAYER_MAX_LEVEL: %d\n", gPlayerMaxLevel); } TOKEN("enable_waithack_syslog") { str_to_number(v_syslog_notice, value_string); continue; } TOKEN("enable_waithack_syschat") { str_to_number(v_syschat_notice, value_string); continue; } TOKEN("enable_waithack_ban") { str_to_number(v_ban_waithack, value_string); continue; } TOKEN("block_char_creation") { int tmp = 0; str_to_number(tmp, value_string); if (0 == tmp) g_BlockCharCreation = false; else g_BlockCharCreation = true; continue; } TOKEN("ENABLE_NEW_WOLFMAN") { str_to_number(g_bEnableNewKingdomForWolfman, value_string); continue; } } if (g_setQuestObjectDir.empty()) g_setQuestObjectDir.insert(g_stDefaultQuestObjectDir); if (0 == db_port) { fprintf(stderr, "DB_PORT not configured\n"); exit(1); } if (0 == g_bChannel) { fprintf(stderr, "CHANNEL not configured\n"); exit(1); } if (g_stHostname.empty()) { fprintf(stderr, "HOSTNAME must be configured.\n"); exit(1); } // LOCALE_SERVICE LocaleService_LoadLocaleStringFile(); LocaleService_TransferDefaultSetting(); LocaleService_LoadEmpireTextConvertTables(); // END_OF_LOCALE_SERVICE fclose(fp); if ((fp = fopen("CMD", "r"))) { while (fgets(buf, 256, fp)) { char cmd[32], levelname[32]; int level; two_arguments(buf, cmd, sizeof(cmd), levelname, sizeof(levelname)); if (!*cmd || !*levelname) { fprintf(stderr, "CMD syntax error: <cmd> <DISABLE | LOW_WIZARD | WIZARD | HIGH_WIZARD | GOD>\n"); exit(1); } if (!strcasecmp(levelname, "LOW_WIZARD")) level = GM_LOW_WIZARD; else if (!strcasecmp(levelname, "WIZARD")) level = GM_WIZARD; else if (!strcasecmp(levelname, "HIGH_WIZARD")) level = GM_HIGH_WIZARD; else if (!strcasecmp(levelname, "GOD")) level = GM_GOD; else if (!strcasecmp(levelname, "IMPLEMENTOR")) level = GM_IMPLEMENTOR; else if (!strcasecmp(levelname, "DISABLE")) level = GM_IMPLEMENTOR + 1; else { fprintf(stderr, "CMD syntax error: <cmd> <DISABLE | LOW_WIZARD | WIZARD | HIGH_WIZARD | GOD>\n"); exit(1); } interpreter_set_privilege(cmd, level); } fclose(fp); } LoadValidCRCList(); LoadStateUserCount(); CWarMapManager::instance().LoadWarMapInfo(NULL); FN_log_adminpage(); } const char* get_table_postfix() { return g_table_postfix.c_str(); } void LoadValidCRCList() { s_set_dwProcessCRC.clear(); s_set_dwFileCRC.clear(); FILE * fp; char buf[256]; if ((fp = fopen("CRC", "r"))) { while (fgets(buf, 256, fp)) { if (!*buf) continue; DWORD dwValidClientProcessCRC; DWORD dwValidClientFileCRC; sscanf(buf, " %u %u ", &dwValidClientProcessCRC, &dwValidClientFileCRC); s_set_dwProcessCRC.insert(dwValidClientProcessCRC); s_set_dwFileCRC.insert(dwValidClientFileCRC); fprintf(stderr, "CLIENT_CRC: %u %u\n", dwValidClientProcessCRC, dwValidClientFileCRC); } fclose(fp); } } bool LoadClientVersion() { FILE * fp = fopen("VERSION", "r"); if (!fp) return false; char buf[256]; fgets(buf, 256, fp); char * p = strchr(buf, '\n'); if (p) *p = '\0'; fprintf(stderr, "VERSION: \"%s\"\n", buf); g_stClientVersion = buf; fclose(fp); return true; } void CheckClientVersion() { if (LC_IsEurope()) { g_bCheckClientVersion = true; } else { g_bCheckClientVersion = false; } const DESC_MANAGER::DESC_SET & set = DESC_MANAGER::instance().GetClientSet(); DESC_MANAGER::DESC_SET::const_iterator it = set.begin(); while (it != set.end()) { LPDESC d = *(it++); if (!d->GetCharacter()) continue; int version = atoi(g_stClientVersion.c_str()); int date = atoi(d->GetClientVersion() ); //if (0 != g_stClientVersion.compare(d->GetClientVersion()) ) if (version != date) { d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ¶óŔĚľđĆ® ąöŔüŔĚ Ć˛·Á ·Î±×ľĆżô µË´Ď´Ů. Á¤»óŔűŔ¸·Î ĆĐġ ČÄ Á˘ĽÓÇĎĽĽżä.")); d->DelayedDisconnect(10); } } } void LoadStateUserCount() { FILE * fp = fopen("state_user_count", "r"); if (!fp) return; if (!LC_IsHongKong()) fscanf(fp, " %d %d ", &g_iFullUserCount, &g_iBusyUserCount); fclose(fp); } bool IsValidProcessCRC(DWORD dwCRC) { return s_set_dwProcessCRC.find(dwCRC) != s_set_dwProcessCRC.end(); } bool IsValidFileCRC(DWORD dwCRC) { return s_set_dwFileCRC.find(dwCRC) != s_set_dwFileCRC.end(); }
  2. Hi, I have some errors when compiling the source. OBJDIR/BattleArena.o OBJDIR/cipher.o: In function `DH2KeyAgreement::Prepare(void*, unsigned int*)': /usr/src/clawders/Srcs/Server/game/src/cipher.cpp:315: undefined reference to `CryptoPP::Integer::Integer(char const*)' /usr/src/clawders/Srcs/Server/game/src/cipher.cpp:322: undefined reference to `CryptoPP::Integer::Integer(char const*)' /usr/src/clawders/Srcs/Server/game/src/cipher.cpp:324: undefined reference to `CryptoPP::Integer::Integer(char const*)' OBJDIR/cipher.o: In function `CryptoPP::DL_SimpleKeyAgreementDomainBase<CryptoPP::Integer>::Agree(unsigned char*, unsigned char const*, unsigned char const*, bool) const': /usr/src/clawders/Srcs/Server/game/src/../../../Extern/include/cryptopp/pubkey.h:1405: undefined reference to `CryptoPP::Integer::Integer(unsigned char const*, unsigned int, CryptoPP::Integer::Signedness)' OBJDIR/cipher.o: In function `CryptoPP::DL_SimpleKeyAgreementDomainBase<CryptoPP::Integer>::GeneratePublicKey(CryptoPP::RandomNumberGenerator&, unsigned char const*, unsigned char*) const': /usr/src/clawders/Srcs/Server/game/src/../../../Extern/include/cryptopp/pubkey.h:1395: undefined reference to `CryptoPP::Integer::Integer(unsigned char const*, unsigned int, CryptoPP::Integer::Signedness)'
  3. Hello, we have implemented monsters on the official server, everything works perfectly but does not show the name of monsters in mob_names client and server is added to the name that would be the problem? I look at other monsters name.
  4. I tried with iindex.php?page=login sign, too, failed login, you can do me login.php files you do not know how it would be done anyway thanks. scripts are made of darkdev
  5. Hello, I started to encode a new website, I'm not very good at php, everything works perfectly, but the function login does not work, place the right data logging, I login and tells me that logging failed, login function is the following. <!-- login start --> <div id="ack"></div> <div id='login'> <div id='auth'> <?php if(!isset($_SESSION['user']) && !isset($_SESSION['pass'])){ login();?> <form id="myForm" action="index.php" method="POST" style="margin-left:-0px; margin-top:-0px;"> <input type="text" id="input_id" name="userid" onfocus="if(this.value=='Login')this.value=''" onblur="if(this.value=='')this.value='Login'" value="Login"> <input type="password" id="input_pw" name="userpass" onfocus="if(this.value=='Password')this.value=''" onblur="if(this.value=='')this.value='Password'" value="Password"> <input type="submit" id="button_login" name="submit"> </form> </div> </div> <?php } else{ ?> <?php if($_SESSION['admin'] > 0){?> <a HREF="index.php?page=panou-admin">&raquo; Administrare</a><br> <?php } ?> <a href='index.php?page=panou-user'>&raquo; <?=userpp?></a><br> <a HREF="index.php?page=caractere">&raquo; Caractere</a><br> <a HREF="index.php?page=schimbare-email">&raquo; Schimba email</a><br> <a HREF="index.php?page=parola-depozit">&raquo; Parola depozit</a><br> <a HREF="index.php?page=schimbare-pw">&raquo; Schimba parola</a><br> <a HREF="index.php?page=cod-stergere">&raquo; Cod siguranta</a> <br> <a href='index.php?page=iesire'>&raquo; <?=logoutz?></a> <?php } ?> <!-- login end -->
  6. Hello, I need a mob_proto Decrypter & crypter, I searched and tried all cripterele and decripterele but none is good.
×
×
  • 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.