void SendTargetDeletePacket(LPDESC d, int iID) { TPacketGCTargetDelete pck; pck.bHeader = HEADER_GC_TARGET_DELETE; pck.lID = iID; d->Packet(&pck, sizeof(TPacketGCTargetDelete)); }
void CObject::EncodeInsertPacket(LPENTITY entity) { LPDESC d; if (!(d = entity->GetDesc())) return; sys_log(0, "ObjectInsertPacket vid %u vnum %u rot %f %f %f", m_dwVID, m_data.dwVnum, m_data.xRot, m_data.yRot, m_data.zRot); TPacketGCCharacterAdd pack; memset(&pack, 0, sizeof(TPacketGCCharacterAdd)); pack.header = HEADER_GC_CHARACTER_ADD; pack.dwVID = m_dwVID; pack.bType = CHAR_TYPE_BUILDING; pack.angle = m_data.zRot; pack.x = GetX(); pack.y = GetY(); pack.z = GetZ(); pack.wRaceNum = m_data.dwVnum; // 빌딩 회전 정보(벽일때는 문 위치)를 변환 pack.dwAffectFlag[0] = unsigned(m_data.xRot); pack.dwAffectFlag[1] = unsigned(m_data.yRot); if (GetLand()) { // pack.dwGuild = GetLand()->GetOwner(); } d->Packet(&pack, sizeof(pack)); }
void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim) { if (pkChr->IsDead() || pkVictim->IsDead()) return; CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID()); CPVP * pkPVP; if ((pkPVP = Find(kPVP.m_dwCRC))) { // 복수할 수 있으면 바로 싸움! if (pkPVP->Agree(pkChr->GetPlayerID())) { pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkChr->GetName()); pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s님과의 대결 시작!"), pkVictim->GetName()); } return; } pkPVP = M2_NEW CPVP(kPVP); pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID()); pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID()); m_map_pkPVP.insert(map<DWORD, CPVP *>::value_type(pkPVP->m_dwCRC, pkPVP)); m_map_pkPVPSetByID[pkChr->GetPlayerID()].insert(pkPVP); m_map_pkPVPSetByID[pkVictim->GetPlayerID()].insert(pkPVP); pkPVP->Packet(); char msg[CHAT_MAX_LEN + 1]; snprintf(msg, sizeof(msg), LC_TEXT("%s님이 대결신청을 했습니다. 승낙하려면 대결동의를 하세요."), pkChr->GetName()); pkVictim->ChatPacket(CHAT_TYPE_INFO, msg); pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s에게 대결신청을 했습니다."), pkVictim->GetName()); // NOTIFY_PVP_MESSAGE LPDESC pkVictimDesc = pkVictim->GetDesc(); if (pkVictimDesc) { TPacketGCWhisper pack; int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1); pack.bHeader = HEADER_GC_WHISPER; pack.wSize = sizeof(TPacketGCWhisper) + len; pack.bType = WHISPER_TYPE_SYSTEM; strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom)); TEMP_BUFFER buf; buf.write(&pack, sizeof(TPacketGCWhisper)); buf.write(msg, len); pkVictimDesc->Packet(buf.read_peek(), buf.size()); } // END_OF_NOTIFY_PVP_MESSAGE }
void SendTargetUpdatePacket(LPDESC d, int iID, int x, int y) { TPacketGCTargetUpdate pck; pck.bHeader = HEADER_GC_TARGET_UPDATE; pck.lID = iID; pck.lX = x; pck.lY = y; d->Packet(&pck, sizeof(TPacketGCTargetUpdate)); sys_log(0, "SendTargetUpdatePacket %d %dx%d", iID, x, y); }
void CPVP::Packet(bool bDelete) { if (!m_players[0].dwVID || !m_players[1].dwVID) { if (bDelete) sys_err("null vid when removing %u %u", m_players[0].dwVID, m_players[0].dwVID); return; } TPacketGCPVP pack; pack.bHeader = HEADER_GC_PVP; if (bDelete) { pack.bMode = PVP_MODE_NONE; pack.dwVIDSrc = m_players[0].dwVID; pack.dwVIDDst = m_players[1].dwVID; } else if (IsFight()) { pack.bMode = PVP_MODE_FIGHT; pack.dwVIDSrc = m_players[0].dwVID; pack.dwVIDDst = m_players[1].dwVID; } else { pack.bMode = m_bRevenge ? PVP_MODE_REVENGE : PVP_MODE_AGREE; if (m_players[0].bAgree) { pack.dwVIDSrc = m_players[0].dwVID; pack.dwVIDDst = m_players[1].dwVID; } else { pack.dwVIDSrc = m_players[1].dwVID; pack.dwVIDDst = m_players[0].dwVID; } } const DESC_MANAGER::DESC_SET & c_rSet = DESC_MANAGER::instance().GetClientSet(); DESC_MANAGER::DESC_SET::const_iterator it = c_rSet.begin(); while (it != c_rSet.end()) { LPDESC d = *it++; if (d->IsPhase(PHASE_GAME) || d->IsPhase(PHASE_DEAD)) d->Packet(&pack, sizeof(pack)); } }
void LoginFailure(LPDESC d, const char * c_pszStatus) { if (!d) return; TPacketGCLoginFailure failurePacket; failurePacket.header = HEADER_GC_LOGIN_FAILURE; strlcpy(failurePacket.szStatus, c_pszStatus, sizeof(failurePacket.szStatus)); d->Packet(&failurePacket, sizeof(failurePacket)); }
void SendAffectAddPacket(LPDESC d, CAffect * pkAff) { TPacketGCAffectAdd ptoc; ptoc.bHeader = HEADER_GC_AFFECT_ADD; ptoc.elem.dwType = pkAff->dwType; ptoc.elem.bApplyOn = pkAff->bApplyOn; ptoc.elem.lApplyValue = pkAff->lApplyValue; ptoc.elem.dwFlag = pkAff->dwFlag; ptoc.elem.lDuration = pkAff->lDuration; ptoc.elem.lSPCost = pkAff->lSPCost; d->Packet(&ptoc, sizeof(TPacketGCAffectAdd)); }
void CItem::EncodeInsertPacket(LPENTITY ent) { LPDESC d; if (!(d = ent->GetDesc())) return; const PIXEL_POSITION & c_pos = GetXYZ(); struct packet_item_ground_add pack; pack.bHeader = HEADER_GC_ITEM_GROUND_ADD; pack.x = c_pos.x; pack.y = c_pos.y; pack.z = c_pos.z; pack.dwVnum = GetVnum(); pack.dwVID = m_dwVID; //pack.count = m_dwCount; d->Packet(&pack, sizeof(pack)); if (m_pkOwnershipEvent != NULL) { item_event_info * info = dynamic_cast<item_event_info *>(m_pkOwnershipEvent->info); if ( info == NULL ) { sys_err( "CItem::EncodeInsertPacket> <Factor> Null pointer" ); return; } TPacketGCItemOwnership p; p.bHeader = HEADER_GC_ITEM_OWNERSHIP; p.dwVID = m_dwVID; strlcpy(p.szName, info->szOwnerName, sizeof(p.szName)); d->Packet(&p, sizeof(TPacketGCItemOwnership)); } }
void CManager::SendLandList(LPDESC d, long lMapIndex) { TLandPacketElement e; TEMP_BUFFER buf; WORD wCount = 0; itertype(m_map_pkLand) it = m_map_pkLand.begin(); while (it != m_map_pkLand.end()) { CLand * pkLand = (it++)->second; const TLand & r = pkLand->GetData(); if (r.lMapIndex != lMapIndex) continue; // LPCHARACTER ch = d->GetCharacter(); if (ch) { CGuild *guild = CGuildManager::instance().FindGuild(r.dwGuildID); ch->SendGuildName(guild); } // e.dwID = r.dwID; e.x = r.x; e.y = r.y; e.width = r.width; e.height = r.height; e.dwGuildID = r.dwGuildID; buf.write(&e, sizeof(TLandPacketElement)); ++wCount; } sys_log(0, "SendLandList map %d count %u elem_size: %d", lMapIndex, wCount, buf.size()); if (wCount != 0) { TPacketGCLandList p; p.header = HEADER_GC_LAND_LIST; p.size = sizeof(TPacketGCLandList) + buf.size(); d->BufferedPacket(&p, sizeof(TPacketGCLandList)); d->Packet(buf.read_peek(), buf.size()); } }
///////////////////////////////////////////////////////////////////// // Packet ///////////////////////////////////////////////////////////////////// void SendTargetCreatePacket(LPDESC d, TargetInfo * info) { if (!info->bSendToClient) return; TPacketGCTargetCreate pck; pck.bHeader = HEADER_GC_TARGET_CREATE; pck.lID = info->iID; pck.bType = info->iType; pck.dwVID = info->iArg1; strlcpy(pck.szName, info->szTargetDesc, sizeof(pck.szName)); d->Packet(&pck, sizeof(TPacketGCTargetCreate)); }
void CParty::SendParameter(LPCHARACTER ch) { TPacketGCPartyParameter p; p.bHeader = HEADER_GC_PARTY_PARAMETER; p.bDistributeMode = m_iExpDistributionMode; LPDESC d = ch->GetDesc(); if (d) { d->Packet(&p, sizeof(TPacketGCPartyParameter)); } }
void SendAffectRemovePacket(LPDESC d, DWORD pid, DWORD type, BYTE point) { TPacketGCAffectRemove ptoc; ptoc.bHeader = HEADER_GC_AFFECT_REMOVE; ptoc.dwType = type; ptoc.bApplyOn = point; d->Packet(&ptoc, sizeof(TPacketGCAffectRemove)); TPacketGDRemoveAffect ptod; ptod.dwPID = pid; ptod.dwType = type; ptod.bApplyOn = point; db_clientdesc->DBPacket(HEADER_GD_REMOVE_AFFECT, 0, &ptod, sizeof(ptod)); }
void CItem::EncodeRemovePacket(LPENTITY ent) { LPDESC d; if (!(d = ent->GetDesc())) return; struct packet_item_ground_del pack; pack.bHeader = HEADER_GC_ITEM_GROUND_DEL; pack.dwVID = m_dwVID; d->Packet(&pack, sizeof(pack)); sys_log(2, "Item::EncodeRemovePacket %s to %s", GetName(), ((LPCHARACTER) ent)->GetName()); }
void CObject::EncodeRemovePacket(LPENTITY entity) { LPDESC d; if (!(d = entity->GetDesc())) return; sys_log(0, "ObjectRemovePacket vid %u", m_dwVID); TPacketGCCharacterDelete pack; pack.header = HEADER_GC_CHARACTER_DEL; pack.id = m_dwVID; d->Packet(&pack, sizeof(TPacketGCCharacterDelete)); }
void CManager::UpdateLand(TLand * pTable) { CLand * pkLand = FindLand(pTable->dwID); if (!pkLand) { sys_err("cannot find land by id %u", pTable->dwID); return; } pkLand->PutData(pTable); const DESC_MANAGER::DESC_SET & cont = DESC_MANAGER::instance().GetClientSet(); itertype(cont) it = cont.begin(); TPacketGCLandList p; p.header = HEADER_GC_LAND_LIST; p.size = sizeof(TPacketGCLandList) + sizeof(TLandPacketElement); TLandPacketElement e; e.dwID = pTable->dwID; e.x = pTable->x; e.y = pTable->y; e.width = pTable->width; e.height = pTable->height; e.dwGuildID = pTable->dwGuildID; sys_log(0, "BUILDING: UpdateLand %u pos %dx%d guild %u", e.dwID, e.x, e.y, e.dwGuildID); CGuild *guild = CGuildManager::instance().FindGuild(pTable->dwGuildID); while (it != cont.end()) { LPDESC d = *(it++); if (d->GetCharacter() && d->GetCharacter()->GetMapIndex() == pTable->lMapIndex) { // we must send the guild name first d->GetCharacter()->SendGuildName(guild); d->BufferedPacket(&p, sizeof(TPacketGCLandList)); d->Packet(&e, sizeof(TLandPacketElement)); } } }
void CWarMap::SendWarPacket(LPDESC d) { TPacketGCGuild pack; TPacketGCGuildWar pack2; pack.header = HEADER_GC_GUILD; pack.subheader = GUILD_SUBHEADER_GC_WAR; pack.size = sizeof(pack) + sizeof(pack2); pack2.dwGuildSelf = m_TeamData[0].dwID; pack2.dwGuildOpp = m_TeamData[1].dwID; pack2.bType = CGuildManager::instance().TouchGuild(m_TeamData[0].dwID)->GetGuildWarType(m_TeamData[1].dwID); pack2.bWarState = CGuildManager::instance().TouchGuild(m_TeamData[0].dwID)->GetGuildWarState(m_TeamData[1].dwID); d->BufferedPacket(&pack, sizeof(pack)); d->Packet(&pack2, sizeof(pack2)); }
void DESC_MANAGER::SendClientPackageCryptKey( LPDESC desc ) { if( !desc ) { return; } TPacketGCHybridCryptKeys packet; { packet.bHeader = HEADER_GC_HYBRIDCRYPT_KEYS; m_pPackageCrypt->GetPackageCryptKeys( &(packet.pDataKeyStream), packet.KeyStreamLen ); } if( packet.KeyStreamLen > 0 ) { desc->Packet( packet.GetStreamData(), packet.GetStreamSize() ); } }
void DESC_MANAGER::SendClientPackageSDBToLoadMap( LPDESC desc, const char* pMapName ) { if( !desc ) { return; } TPacketGCPackageSDB packet; { packet.bHeader = HEADER_GC_HYBRIDCRYPT_SDB; if( !m_pPackageCrypt->GetRelatedMapSDBStreams( pMapName, &(packet.m_pDataSDBStream), packet.iStreamLen ) ) return; } if( packet.iStreamLen > 0 ) { desc->Packet( packet.GetStreamData(), packet.GetStreamSize()); } }
void DSManager::SendRefineResultPacket(LPCHARACTER ch, BYTE bSubHeader, const TItemPos& pos) { TPacketGCDragonSoulRefine pack; pack.bSubType = bSubHeader; if (pos.IsValidItemPosition()) { pack.Pos = pos; } LPDESC d = ch->GetDesc(); if (NULL == d) { return ; } else { d->Packet(&pack, sizeof(pack)); } }
void CWarMap::SendScorePacket(BYTE bIdx, LPDESC d) { TPacketGCGuild p; p.header = HEADER_GC_GUILD; p.subheader = GUILD_SUBHEADER_GC_WAR_SCORE; p.size = sizeof(p) + sizeof(DWORD) + sizeof(DWORD) + sizeof(long); TEMP_BUFFER buf; buf.write(&p, sizeof(p)); buf.write(&m_TeamData[bIdx].dwID, sizeof(DWORD)); buf.write(&m_TeamData[bIdx ? 0 : 1].dwID, sizeof(DWORD)); buf.write(&m_TeamData[bIdx].iScore, sizeof(long)); if (d) d->Packet(buf.read_peek(), buf.size()); else Packet(buf.read_peek(), buf.size()); }
bool CHARACTER::DragonSoul_RefineWindow_Open(LPENTITY pEntity) { if (NULL == m_pointsInstant.m_pDragonSoulRefineWindowOpener) { m_pointsInstant.m_pDragonSoulRefineWindowOpener = pEntity; } TPacketGCDragonSoulRefine PDS; PDS.header = HEADER_GC_DRAGON_SOUL_REFINE; PDS.bSubType = DS_SUB_HEADER_OPEN; LPDESC d = GetDesc(); if (NULL == d) { sys_err ("User(%s)'s DESC is NULL POINT.", GetName()); return false; } d->Packet(&PDS, sizeof(PDS)); return true; }
bool CInputTeen::ProcessHandshake(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed) { const char *c_pData = (const char*) c_pvOrig; size_t packet_len = sizeof(DWORD); if (uiBytes < packet_len) return false; DWORD handshake = decode_4bytes(c_pData); c_pData += packet_len; m_iBufferLeft -= packet_len; r_iBytesProceed += packet_len; this->SetStep(1); char buf[256]; *((DWORD *) buf) = handshake ^ HANDSHAKE_XOR; lpDesc->Packet(buf, sizeof(DWORD)); return true; }
void DESC_MANAGER::SendClientPackageCryptKey( LPDESC desc ) { if( !desc ) { return; } TPacketGCHybridCryptKeys packet; { packet.bHeader = HEADER_GC_HYBRIDCRYPT_KEYS; m_pPackageCrypt->GetPackageCryptKeys( &(packet.pDataKeyStream), packet.KeyStreamLen ); } if( packet.KeyStreamLen > 0 ) { if (g_test_server) { // keys를 string으로 남기는 건 문제가 있음. 중간에 NULL 있으면 잘릴테니.. 그래도 혹시 모르니 남김. sys_log(0, "[PackageCryptInfo] send to %s. (keys: %s, len: %d)", desc->GetAccountTable().login, std::string((char*)packet.pDataKeyStream).c_str(), packet.KeyStreamLen); } desc->Packet( packet.GetStreamData(), packet.GetStreamSize() ); } }
void SendPanamaList(LPDESC d) { TPacketGCPanamaPack pack; pack.bHeader = HEADER_GC_PANAMA_PACK; PanamaVectorType::iterator it = s_panamaVector.begin(); while (it != s_panamaVector.end()) { strlcpymt(pack.szPackName, it->first.c_str(), sizeof(pack.szPackName)); memcpy(pack.abIV, it->second, sizeof(pack.abIV)); DWORD* ivs = (DWORD*)pack.abIV; for (int i = 0; i != 32 / sizeof(DWORD); i++) { ivs[i] ^= d->GetPanamaKey() + i * 16777619; // 더블워드단위로 변형된 파나마 키를 XOR 해준다 } ++it; d->Packet(&pack, sizeof(pack)); } }
void CPVPManager::SendList(LPDESC d) { map<DWORD, CPVP *>::iterator it = m_map_pkPVP.begin(); DWORD dwVID = d->GetCharacter()->GetVID(); TPacketGCPVP pack; pack.bHeader = HEADER_GC_PVP; while (it != m_map_pkPVP.end()) { CPVP * pkPVP = (it++)->second; if (!pkPVP->m_players[0].dwVID || !pkPVP->m_players[1].dwVID) continue; // VID가 둘다 있을 경우에만 보낸다. if (pkPVP->IsFight()) { pack.bMode = PVP_MODE_FIGHT; pack.dwVIDSrc = pkPVP->m_players[0].dwVID; pack.dwVIDDst = pkPVP->m_players[1].dwVID; } else { pack.bMode = pkPVP->m_bRevenge ? PVP_MODE_REVENGE : PVP_MODE_AGREE; if (pkPVP->m_players[0].bAgree) { pack.dwVIDSrc = pkPVP->m_players[0].dwVID; pack.dwVIDDst = pkPVP->m_players[1].dwVID; } else { pack.dwVIDSrc = pkPVP->m_players[1].dwVID; pack.dwVIDDst = pkPVP->m_players[0].dwVID; } } d->Packet(&pack, sizeof(pack)); sys_log(1, "PVPManager::SendList %d %d", pack.dwVIDSrc, pack.dwVIDDst); if (pkPVP->m_players[0].dwVID == dwVID) { LPCHARACTER ch = CHARACTER_MANAGER::instance().Find(pkPVP->m_players[1].dwVID); if (ch && ch->GetDesc()) { LPDESC d = ch->GetDesc(); d->Packet(&pack, sizeof(pack)); } } else if (pkPVP->m_players[1].dwVID == dwVID) { LPCHARACTER ch = CHARACTER_MANAGER::instance().Find(pkPVP->m_players[0].dwVID); if (ch && ch->GetDesc()) { LPDESC d = ch->GetDesc(); d->Packet(&pack, sizeof(pack)); } } } }
void CInputAuth::LoginOpenID(LPDESC d, const char * c_pData) { #ifdef ENABLE_LIMIT_TIME #endif //OpenID test code. TPacketCGLogin5 *tempInfo1 = (TPacketCGLogin5 *)c_pData; //일본 웹 서버에 인증키 확인 요청을 보낸다. char* authKey = tempInfo1->authKey; char returnID[LOGIN_MAX_LEN + 1] = {0}; int test_url_get_protocol = auth_OpenID(authKey, inet_ntoa(d->GetAddr().sin_addr), returnID); //인증 실패. 에러 처리 if (0!=test_url_get_protocol) { LoginFailure(d, "OpenID Fail"); return; } TPacketCGLogin3 tempInfo2; strncpy(tempInfo2.login, returnID, LOGIN_MAX_LEN); strncpy(tempInfo2.passwd, "0000", PASSWD_MAX_LEN); for(int i=0; i<4; i++) tempInfo2.adwClientKey[i] = tempInfo1->adwClientKey[i]; TPacketCGLogin3 * pinfo = &tempInfo2; if (!g_bAuthServer) { sys_err ("CInputAuth class is not for game server. IP %s might be a hacker.", inet_ntoa(d->GetAddr().sin_addr)); d->DelayedDisconnect(5); return; } // string 무결성을 위해 복사 char login[LOGIN_MAX_LEN + 1]; trim_and_lower(pinfo->login, login, sizeof(login)); char passwd[PASSWD_MAX_LEN + 1]; strlcpy(passwd, pinfo->passwd, sizeof(passwd)); sys_log(0, "InputAuth::Login : %s(%d) desc %p", login, strlen(login), get_pointer(d)); // check login string if (false == FN_IS_VALID_LOGIN_STRING(login)) { sys_log(0, "InputAuth::Login : IS_NOT_VALID_LOGIN_STRING(%s) desc %p", login, get_pointer(d)); LoginFailure(d, "NOID"); return; } if (g_bNoMoreClient) { TPacketGCLoginFailure failurePacket; failurePacket.header = HEADER_GC_LOGIN_FAILURE; strlcpy(failurePacket.szStatus, "SHUTDOWN", sizeof(failurePacket.szStatus)); d->Packet(&failurePacket, sizeof(failurePacket)); return; } if (DESC_MANAGER::instance().FindByLoginName(login)) { LoginFailure(d, "ALREADY"); return; } DWORD dwKey = DESC_MANAGER::instance().CreateLoginKey(d); DWORD dwPanamaKey = dwKey ^ pinfo->adwClientKey[0] ^ pinfo->adwClientKey[1] ^ pinfo->adwClientKey[2] ^ pinfo->adwClientKey[3]; d->SetPanamaKey(dwPanamaKey); sys_log(0, "InputAuth::Login : key %u:0x%x login %s", dwKey, dwPanamaKey, login); // BRAZIL_AUTH if (LC_IsBrazil() && !test_server) { int result = auth_brazil(login, passwd); switch (result) { case AUTH_BRAZIL_SERVER_ERR: case AUTH_BRAZIL_NOID: LoginFailure(d, "NOID"); return; case AUTH_BRAZIL_WRONGPWD: LoginFailure(d, "WRONGPWD"); return; case AUTH_BRAZIL_FLASHUSER: LoginFailure(d, "FLASH"); return; } } TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3; thecore_memcpy(p, pinfo, sizeof(TPacketCGLogin3)); char szPasswd[PASSWD_MAX_LEN * 2 + 1]; DBManager::instance().EscapeString(szPasswd, sizeof(szPasswd), passwd, strlen(passwd)); char szLogin[LOGIN_MAX_LEN * 2 + 1]; DBManager::instance().EscapeString(szLogin, sizeof(szLogin), login, strlen(login)); // CHANNEL_SERVICE_LOGIN if (Login_IsInChannelService(szLogin)) { sys_log(0, "ChannelServiceLogin [%s]", szLogin); DBManager::instance().ReturnQuery(QID_AUTH_LOGIN_OPENID, dwKey, p, "SELECT '%s',password,securitycode,social_id,id,status,availDt - NOW() > 0," "UNIX_TIMESTAMP(silver_expire)," "UNIX_TIMESTAMP(gold_expire)," "UNIX_TIMESTAMP(safebox_expire)," "UNIX_TIMESTAMP(autoloot_expire)," "UNIX_TIMESTAMP(fish_mind_expire)," "UNIX_TIMESTAMP(marriage_fast_expire)," "UNIX_TIMESTAMP(money_drop_rate_expire)," "UNIX_TIMESTAMP(create_time)" " FROM account WHERE login='******'", szPasswd, szLogin); } // END_OF_CHANNEL_SERVICE_LOGIN else { DBManager::instance().ReturnQuery(QID_AUTH_LOGIN_OPENID, dwKey, p, "SELECT PASSWORD('%s'),password,securitycode,social_id,id,status,availDt - NOW() > 0," "UNIX_TIMESTAMP(silver_expire)," "UNIX_TIMESTAMP(gold_expire)," "UNIX_TIMESTAMP(safebox_expire)," "UNIX_TIMESTAMP(autoloot_expire)," "UNIX_TIMESTAMP(fish_mind_expire)," "UNIX_TIMESTAMP(marriage_fast_expire)," "UNIX_TIMESTAMP(money_drop_rate_expire)," "UNIX_TIMESTAMP(create_time)" " FROM account WHERE login='******'", szPasswd, szLogin); } }