Files
Sun1602/Server/DatabaseProxy/DBProxyServerEx.MatchDBQuery.cpp
T
2022-10-26 12:25:11 +08:00

127 lines
3.7 KiB
C++

#include "stdafx.h"
#include <Protocol_DG.h>
#ifdef __CN_OO0510__FATIGUE_MATCHING_UPDATE
// 캐릭터 생성시, 플레이어가 접속 종료시
void DBProxyServerEx::ExecuteQuery_MatchChar_Update( USERGUID UserGuid, const TCHAR* szCharName, LEVELTYPE Level, BYTE Class )
{
#if defined (_GLOBAL) || defined (_RUSSIA)
return;
#endif
STRING_SAFER_CHAR_NAME ssCharName( szCharName );
STRING_SAFER_QUERY64 szQueryBuff;
szQueryBuff.MakeString( "S_MatchChar_Update %d,'%s',%d,%d,%d", UserGuid, (TCHAR*)ssCharName, GetGuid(), Level, Class );
Query_MatchChar_Update* pQuery = Query_MatchChar_Update::ALLOC();
pQuery->SetIndex( QUERY_MATCHCHAR_UPDATE );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
match_database_.DBQuery( pQuery );
// DISPMSG( szQueryBuff );
// DISPMSG( "\n" );
}
// 캐릭터 삭제시
void DBProxyServerEx::ExecuteQuery_MatchChar_Delete( USERGUID UserGuid, const TCHAR * szCharName )
{
#if defined (_GLOBAL) || defined (_RUSSIA)
return;
#endif
STRING_SAFER_CHAR_NAME ssCharName( szCharName );
STRING_SAFER_QUERY128 szQueryBuff;
szQueryBuff.MakeString( "S_MatchChar_Delete %d,'%s',%d", UserGuid, (TCHAR*)ssCharName, GetGuid() );
Query_MatchChar_Delete * pQuery = Query_MatchChar_Delete::ALLOC();
pQuery->SetIndex( QUERY_MATCHCHAR_DELETE );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
match_database_.DBQuery( pQuery );
// DISPMSG( szQueryBuff );
// DISPMSG( "\n" );
}
#endif
//피로도 관련 쿼리 함수
#ifdef __CN_OO0510__FATIGUE_MATCHING_UPDATE
void DBProxyServerEx::ExecuteQuery_MatchFatigue_Update( USERGUID UserGuid, DWORD dwUserKey, INT nPlayTime )
{
DBUser* pUser = g_DBUserManager.FindUser( UserGuid );
if( !pUser )
{
SUNLOG( eCRITICAL_LOG, "[DBProxyServerEx::ExecuteQuery_MatchFatigue_Update] User Not Found, Guid = %u", UserGuid );
return;
}
if( !pUser->IsFatigueUser() ) return;
struct tm* tmUpdate;
time_t curtime;
util::TimeSync::time( &curtime );
tmUpdate = gmtime( &curtime );
tmUpdate = localtime( &curtime );
// 업데이트 시는 현재의 시간을 업데이트 한다.
STRING_SAFER_QUERY128 szQueryBuff;
szQueryBuff.MakeString(
"{?=call USP_Update_UserFatigued (%d, '%d-%d-%d %d:%d:%d', %d)}",
UserGuid,
1900+tmUpdate->tm_year, tmUpdate->tm_mon+1, tmUpdate->tm_mday,
tmUpdate->tm_hour, tmUpdate->tm_min, tmUpdate->tm_sec,
nPlayTime
);
SUNLOG( eDEV_LOG, "[DBProxyServerEx::ExecuteQuery_MatchFatigue_Update] %s", szQueryBuff );
Query_MatchFatigue_Update* pQuery = Query_MatchFatigue_Update::ALLOC();
pQuery->SetIndex( QUERY_MATCHFATIGUE_UPDATE );
pQuery->SetUserKey( dwUserKey );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
match_database_.DBQuery( pQuery );
}
void DBProxyServerEx::ExecuteQuery_MatchFatigue_Select( USERGUID UserGuid, DWORD dwUserKey )
{
DBUser* pUser = g_DBUserManager.FindUser( UserGuid );
if( !pUser )
{
SUNLOG( eCRITICAL_LOG, _T("[DBProxyServerEx::ExecuteQuery_MatchFatigue_Select] User Not Found, Guid = %u"), UserGuid );
return;
}
if( !pUser->IsFatigueUser() ) //피로도를 적용시킬 필요가 없으면..
{
pUser->SetPlayTime( 0 );
pUser->SetOfflineTime( 0 );
return;
}
struct tm* tmLogin;
time_t LoginTime = pUser->GetLoginTime();
tmLogin = gmtime( &LoginTime );
tmLogin = localtime( &LoginTime );
STRING_SAFER_QUERY128 szQueryBuff;
szQueryBuff.MakeString(
"{?=call USP_Select_UserFatigued (%u, '%d-%d-%d %d:%d:%d')}",
UserGuid,
1900+tmLogin->tm_year, tmLogin->tm_mon+1, tmLogin->tm_mday,
tmLogin->tm_hour, tmLogin->tm_min, tmLogin->tm_sec
);
Query_MatchFatigue_Select* pQuery = Query_MatchFatigue_Select::ALLOC();
pQuery->SetIndex( QUERY_MATCHFATIGUE_SELECT );
pQuery->SetUserKey( dwUserKey );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
match_database_.DBQuery( pQuery );
}
#endif //__CN_OO0510__FATIGUE_MATCHING_UPDATE