void CClientManager::SetEventFlag(TPacketSetEventFlag* p) { ForwardPacket(HEADER_DG_SET_EVENT_FLAG, p, sizeof(TPacketSetEventFlag)); bool bChanged = false; typeof(m_map_lEventFlag.begin()) it = m_map_lEventFlag.find(p->szFlagName); if (it == m_map_lEventFlag.end()) { bChanged = true; m_map_lEventFlag.insert(std::make_pair(std::string(p->szFlagName), p->lValue)); } else if (it->second != p->lValue) { bChanged = true; it->second = p->lValue; } if (bChanged) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "REPLACE INTO quest%s (dwPID, szName, szState, lValue) VALUES(0, '%s', '', %ld)", GetTablePostfix(), p->szFlagName, p->lValue); szQuery[1023] = '\0'; //CDBManager::instance().ReturnQuery(szQuery, QID_QUEST_SAVE, 0, NULL); CDBManager::instance().AsyncQuery(szQuery); sys_log(0, "HEADER_GD_SET_EVENT_FLAG : Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue); return; } sys_log(0, "HEADER_GD_SET_EVENT_FLAG : No Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue); }
void CClientManager::GuildDisband(CPeer* peer, TPacketGuild* p) { sys_log(0, "GuildDisband %u", p->dwGuild); char szQuery[512]; snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild%s WHERE id=%u", GetTablePostfix(), p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild_grade%s WHERE guild_id=%u", GetTablePostfix(), p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); snprintf(szQuery, sizeof(szQuery), "REPLACE INTO quest%s (dwPID, szName, szState, lValue) SELECT pid, 'guild_manage', 'withdraw_time', %u FROM guild_member%s WHERE guild_id = %u", GetTablePostfix(), (DWORD) GetCurrentTime(), GetTablePostfix(), p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild_member%s WHERE guild_id=%u", GetTablePostfix(), p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild_comment%s WHERE guild_id=%u", GetTablePostfix(), p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); ForwardPacket(HEADER_DG_GUILD_DISBAND, p, sizeof(TPacketGuild)); }
void CClientManager::GuildAddMember(CPeer* peer, TPacketGDGuildAddMember * p) { CGuildManager::instance().TouchGuild(p->dwGuild); sys_log(0, "GuildAddMember %u %u", p->dwGuild, p->dwPID); char szQuery[512]; snprintf(szQuery, sizeof(szQuery), "INSERT INTO guild_member%s VALUES(%u, %u, %d, 0, 0)", GetTablePostfix(), p->dwPID, p->dwGuild, p->bGrade); std::auto_ptr<SQLMsg> pmsg_insert(CDBManager::instance().DirectQuery(szQuery)); snprintf(szQuery, sizeof(szQuery), "SELECT pid, grade, is_general, offer, level, job, name FROM guild_member%s, player%s WHERE guild_id = %u and pid = id and pid = %u", GetTablePostfix(), GetTablePostfix(), p->dwGuild, p->dwPID); std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery)); if (pmsg->Get()->uiNumRows == 0) { sys_err("Query failed when getting guild member data %s", pmsg->stQuery.c_str()); return; } MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult); if (!row[0] || !row[1]) return; TPacketDGGuildMember dg; dg.dwGuild = p->dwGuild; str_to_number(dg.dwPID, row[0]); str_to_number(dg.bGrade, row[1]); str_to_number(dg.isGeneral, row[2]); str_to_number(dg.dwOffer, row[3]); str_to_number(dg.bLevel, row[4]); str_to_number(dg.bJob, row[5]); strlcpymt(dg.szName, row[6], sizeof(dg.szName)); ForwardPacket(HEADER_DG_GUILD_ADD_MEMBER, &dg, sizeof(TPacketDGGuildMember)); }
void CClientManager::LoadEventFlag() { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT szName, lValue FROM quest%s WHERE dwPID = 0", GetTablePostfix()); std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery)); SQLResult* pRes = pmsg->Get(); if (pRes->uiNumRows) { MYSQL_ROW row; while ((row = mysql_fetch_row(pRes->pSQLResult))) { TPacketSetEventFlag p; strlcpymt(p.szFlagName, row[0], sizeof(p.szFlagName)); str_to_number(p.lValue, row[1]); sys_log(0, "EventFlag Load %s %d", p.szFlagName, p.lValue); m_map_lEventFlag.insert(std::make_pair(std::string(p.szFlagName), p.lValue)); ForwardPacket(HEADER_DG_SET_EVENT_FLAG, &p, sizeof(TPacketSetEventFlag)); } } }
void CClientManager::GuildRemoveMember(CPeer* peer, TPacketGuild* p) { sys_log(0, "GuildRemoveMember %u %u", p->dwGuild, p->dwInfo); char szQuery[512]; snprintf(szQuery, sizeof(szQuery), "DELETE FROM guild_member%s WHERE pid=%u and guild_id=%u", GetTablePostfix(), p->dwInfo, p->dwGuild); CDBManager::instance().AsyncQuery(szQuery); snprintf(szQuery, sizeof(szQuery), "REPLACE INTO quest%s (dwPID, szName, szState, lValue) VALUES(%u, 'guild_manage', 'withdraw_time', %u)", GetTablePostfix(), p->dwInfo, (DWORD) GetCurrentTime()); CDBManager::instance().AsyncQuery(szQuery); ForwardPacket(HEADER_DG_GUILD_REMOVE_MEMBER, p, sizeof(TPacketGuild)); }
bool CMonarch::LoadMonarch() { MonarchInfo * p = &m_MonarchInfo; char szQuery[256]; snprintf(szQuery, sizeof(szQuery), "SELECT empire, pid, name, money, windate FROM monarch a, player%s b where a.pid=b.id", GetTablePostfix()); SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER); if (pMsg->Get()->uiNumRows == 0) { delete pMsg; return false; } MYSQL_ROW row; for (int n = 0; (row = mysql_fetch_row(pMsg->Get()->pSQLResult)) != NULL; ++n) { int idx = 0; int Empire = 0; str_to_number(Empire, row[idx++]); str_to_number(p->pid[Empire], row[idx++]); strlcpy(p->name[Empire], row[idx++], sizeof(p->name[Empire])); str_to_number(p->money[Empire], row[idx++]); strlcpy(p->date[Empire], row[idx++], sizeof(p->date[Empire])); if (g_test_server) sys_log(0, "[LOAD_MONARCH] Empire %d pid %d money %lld windate %s", Empire, p->pid[Empire], p->money[Empire], p->date[Empire]); } delete pMsg; return true; }
void CGuildManager::QueryRanking() { char szQuery[256]; snprintf(szQuery, sizeof(szQuery), "SELECT id,name,ladder_point FROM guild%s ORDER BY ladder_point DESC LIMIT 20", GetTablePostfix()); CDBManager::instance().ReturnQuery(szQuery, QID_GUILD_RANKING, 0, 0); }
void CGuildManager::Load(DWORD dwGuildID) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT id, name, ladder_point, win, draw, loss, gold, level FROM guild%s WHERE id=%u", GetTablePostfix(), dwGuildID); std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery)); if (pmsg->Get()->uiNumRows) ParseResult(pmsg->Get()); }
void CGuildManager::Initialize() { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT id, name, ladder_point, win, draw, loss, gold, level FROM guild%s", GetTablePostfix()); std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery)); if (pmsg->Get()->uiNumRows) ParseResult(pmsg->Get()); char str[128 + 1]; if (!CConfig::instance().GetValue("POLY_POWER", str, sizeof(str))) *str = '\0'; if (!polyPower.Analyze(str)) sys_err("cannot set power poly: %s", str); else sys_log(0, "POWER_POLY: %s", str); if (!CConfig::instance().GetValue("POLY_HANDICAP", str, sizeof(str))) *str = '\0'; if (!polyHandicap.Analyze(str)) sys_err("cannot set handicap poly: %s", str); else sys_log(0, "HANDICAP_POLY: %s", str); QueryRanking(); }