Files
Sun1602/Client/GameClient/Interface/uiPartyMan/uiPartyMan_main.cpp
T
2022-10-26 12:25:11 +08:00

760 lines
20 KiB
C++

//------------------------------------------------------------------------------
// uiPartyMan_main.cpp
// (C) 2005 ckbang
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#include "uiPartyMan.h"
#include "ObjectManager.h"
#include "uiPartyMember/uiPartyMember.h"
#include "uiPartyLeavePopup/uiPartyLeavePopup.h"
#include "uiPartyOption/uiPartyOption.h"
#include "ItemShareSystem.h"
#include "TargetDialog.h"
#include "uiTargetMan/uiTargetMan.h"
#include "Hero.h"
#include "globalfunc.h"
#include "GameFramework.h"
#include "BattleScene.h"
#include "InterfaceManager.h"
#include "uiSystemMan/uiSystemMan.h"
#include "uiBattleZoneList/uiBattleZoneList.h"
#include "uiBattleZoneCreate/uiBattleZoneCreate.h"
#include "uiBattlezone2Man/uiBattlezone2Man.h"
DWORD g_dwTargetKey = 0;
//------------------------------------------------------------------------------
/**
*/
void _Confirm_ForcedExpulsion(bool bYes)
{
if(bYes && g_dwTargetKey)
{
TargetDialog * pTargetDlg = GET_CAST_DIALOG(TargetDialog, IM_TARGET_MANAGER::TARGET_DIALOG);
if (g_pHero && pTargetDlg && pTargetDlg->IsVisibleWindow())
{
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
uiPartyMan* party_manager = GET_DIALOG_MANAGER(uiPartyMan, UIMAN_PARTY);
if (party_manager)
{
party_manager->Send_CG_PARTY_ROOM_FORCE_LEAVE_SYN();
}
#else
if(g_dwTargetKey == pTargetDlg->GetTargetKey())
{
MSG_CG_PARTY_FORCED_EXPULSION_SYN sendMsg;
sendMsg.m_dwObjKey = g_dwTargetKey;
GlobalFunc::SendPacket( CI_GAMESERVERIDX, &sendMsg, sizeof (MSG_CG_PARTY_FORCED_EXPULSION_SYN) );
}
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
}
}
g_dwTargetKey = 0;
}
//------------------------------------------------------------------------------
/**
*/
uiPartyMan::uiPartyMan(InterfaceManager *pUIMan) :
uiBaseMan(pUIMan)
{
m_bImTheLeader = true;
m_bShowBuffInfos = true;
for (int i=0; i<c_sMAX_PARTY_MEMBER_NUM; ++i)
{
m_pUIPartyMembers[i] = NULL;
}
m_pUIPartyOption = NULL;
m_PartyKey = NULL;
m_MasterKey = NULL;
m_pUIPartyLeavePopup = NULL;
m_bIsOpenPartyJoinWinodw = FALSE;
m_dwPendingPartyKey = 0;
m_dequePartyReturn.clear();
m_pPartyNaviInfo = NULL;
m_bIsShowFace = true;
m_bIsShowGague = true;
m_bIsShowBuf = true;
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
is_opened_return_party_window_ = false;
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
}
void
uiPartyMan::OnInitialize()
{
m_pPartyNaviInfo = new PartyNaviInfo;
assert(m_pPartyNaviInfo);
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
is_disconnected_uesr_kick_ = false;
ZeroMemory(kick_player_name_, sizeof(kick_player_name_));
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
_LoadUI();
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::OnRelease()
{
if (m_pPartyNaviInfo)
{
delete m_pPartyNaviInfo;
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::uiClear(short idx)
{
assert (m_pUIPartyMembers[idx]);
if (m_pUIPartyMembers[idx])
{
m_pUIPartyMembers[idx]->ResetHPGauge();
m_pUIPartyMembers[idx]->ResetMPGauge();
m_pUIPartyMembers[idx]->ShowInterface(FALSE);
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::Process(DWORD dwTick)
{
if (m_pPartyNaviInfo)
{
m_pPartyNaviInfo->Process(dwTick);
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::uiClearAll()
{
for (int i=0; i<MAX_PARTYMEMBER_NUM - 1; ++i)
{
this->uiClear(i);
}
this->m_pUIPartyOption->ShowInterface(FALSE);
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::uiShowAll()
{
int realSize;
if (this->GetPartyNum())
{
realSize = this->GetPartyNum() - 1;
}
else
{
realSize = 0;
}
this->uiClearAll();
for (int i=0; i<realSize; ++i)
{
assert (m_pUIPartyMembers[i]);
if (m_pUIPartyMembers[i])
{
m_pUIPartyMembers[i]->ShowInterface(TRUE);
m_pUIPartyMembers[i]->SetPartView();
#ifdef _DH_BATTLEZONE2_
m_pUIPartyMembers[i]->CheckOutputZoneType();
#endif //_DH_BATTLEZONE2_
}
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::uiSetPartView()
{
int realSize;
if (this->GetPartyNum())
{
realSize = this->GetPartyNum() - 1;
}
else
{
realSize = 0;
}
for (int i=0; i<realSize; ++i)
{
assert (m_pUIPartyMembers[i]);
if (m_pUIPartyMembers[i])
m_pUIPartyMembers[i]->SetPartView();
}
}
void
uiPartyMan::SetShowGague(bool val)
{
m_bIsShowGague = val;
int realSize;
if (this->GetPartyNum())
{
realSize = this->GetPartyNum() - 1;
}
else
{
realSize = 0;
}
for (int i=0; i<realSize; ++i)
{
assert (m_pUIPartyMembers[i]);
if (m_pUIPartyMembers[i])
{
m_pUIPartyMembers[i]->ShowGagueControl(val);
}
}
}
void
uiPartyMan::SetShowFace(bool val)
{
m_bIsShowFace = val;
int realSize;
if (this->GetPartyNum())
{
realSize = this->GetPartyNum() - 1;
}
else
{
realSize = 0;
}
for (int i=0; i<realSize; ++i)
{
assert (m_pUIPartyMembers[i]);
if (m_pUIPartyMembers[i])
{
m_pUIPartyMembers[i]->ShowFaceControl(val);
}
}
}
//------------------------------------------------------------------------------
/**
*/
bool
uiPartyMan::Comp_HeroKey(DWORD dwKey)
{
if (!g_pHero)
return false;
return (g_pHero->GetObjectKey() == dwKey);
}
//------------------------------------------------------------------------------
/**
sort utility
*/
bool _sort_class_high_to_low( uicPartyMemberInfoPlus memInfo1, uicPartyMemberInfoPlus memInfo2 )
{
return (memInfo1.Get().m_byClassType > memInfo2.Get().m_byClassType);
}
bool _sort_class_low_to_high( uicPartyMemberInfoPlus memInfo1, uicPartyMemberInfoPlus memInfo2 )
{
return (memInfo1.Get().m_byClassType < memInfo2.Get().m_byClassType);
}
bool _sort_level_high_to_low( uicPartyMemberInfoPlus memInfo1, uicPartyMemberInfoPlus memInfo2 )
{
return (memInfo1.Get().m_wLevel > memInfo2.Get().m_wLevel);
}
bool _sort_level_low_to_high( uicPartyMemberInfoPlus memInfo1, uicPartyMemberInfoPlus memInfo2 )
{
return (memInfo1.Get().m_wLevel < memInfo2.Get().m_wLevel);
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::uiPartySort(int sortType/* =eUIPARTY_SORT_NORMAL */)
{
if( m_vParty.empty() )
return;
STLX_VECTOR<uicPartyMemberInfoPlus> sortPartys;
uicPartyMemberInfoPlus myParty = this->m_vParty[0];
for (size_t i=1; i<this->m_vParty.size(); ++i)
{
sortPartys.push_back(this->m_vParty[i]);
}
switch (sortType)
{
default:
case eUIPARTY_SORT_NORMAL:
{
}
break;
case eUIPARTY_SORT_CLASS_HIGH_TO_LOW:
{
sort( sortPartys.begin(), sortPartys.end(), _sort_class_high_to_low );
}
break;
case eUIPARTY_SORT_CLASS_LOW_TO_HIGH:
{
sort( sortPartys.begin(), sortPartys.end(), _sort_class_low_to_high );
}
break;
case eUIPARTY_SORT_LEVEL_HIGH_TO_LOW:
{
sort( sortPartys.begin(), sortPartys.end(), _sort_level_high_to_low );
}
break;
case eUIPARTY_SORT_LEVEL_LOW_TO_HIGH:
{
sort( sortPartys.begin(), sortPartys.end(), _sort_level_low_to_high );
}
break;
}
m_vParty.clear();
m_vParty.push_back(myParty);
for (i=0; i<sortPartys.size(); ++i)
{
m_vParty.push_back(sortPartys[i]);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiPartyMan::PutMsg_PlayerEntered(uicPartyMemberInfoPlus memInfo)
{
TCHAR szText[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
if (false == this->Comp_HeroKey(memInfo.Get().m_dwMemberKey))
{
if ((GameFramework::GetCurrentScene()->GetType() == SCENE_TYPE_CHUNTING)
|| (GameFramework::GetCurrentScene()->GetType() == SCENE_TYPE_MISSION))
{
// %s 님이 입장하셨습니다.
this->GetUIMan()->GetInterfaceString(eST_PARTY_MEMBER_ENTER_NOTICE_1, szText, INTERFACE_STRING_LENGTH);
Snprintf (szMessage,INTERFACE_STRING_LENGTH-1, szText, memInfo.Get().m_szCharName);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
// 몬스터의 HP와 얻을 수 있는 경험치가 증가합니다.
this->GetUIMan()->GetInterfaceString(eST_PARTY_MEMBER_ENTER_NOTICE_2, szMessage, INTERFACE_STRING_LENGTH);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
}
//------------------------------------------------------------------------------
/**
*/
void uiPartyMan::ForcedExpulsion() // 파티 추방
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TargetDialog* pTargetDlg = GET_CAST_DIALOG(TargetDialog, IM_TARGET_MANAGER::TARGET_DIALOG);
if (g_pHero && pTargetDlg && pTargetDlg->IsVisibleWindow())
{
if ((g_pHero->GetObjectKey() != pTargetDlg->GetTargetKey()))
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,};
TCHAR szTemp[INTERFACE_STRING_LENGTH] ={0,};
g_dwTargetKey = pTargetDlg->GetTargetKey();
// %s님을 파티에서 탈퇴시키겠습니까?
g_InterfaceManager.GetInterfaceString(5215, szTemp, INTERFACE_STRING_LENGTH);
uiSystemMan* pSystemMan = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM);
if (pSystemMan)
{
uiPartyMan* partyMan = GET_DIALOG_MANAGER(uiPartyMan, UIMAN_PARTY);
if (partyMan->GetPartyMemberInfo(g_dwTargetKey))
{
_PARTY_MEMBER_INFO rMember = (partyMan->GetPartyMemberInfo(g_dwTargetKey))->Get();
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, rMember.m_szCharName);
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
if (rMember.m_isConnected == true)
{
ZeroMemory(kick_player_name_, sizeof(kick_player_name_));
is_disconnected_uesr_kick_ = false;
}
else
{
StrnCopy(kick_player_name_,
rMember.m_szCharName,
MAX_CHARNAME_LENGTH);
is_disconnected_uesr_kick_ = true;
}
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
pSystemMan->Sys_Confirm(szMessage, _Confirm_ForcedExpulsion);
}
}
}
else
{
// 강제 탈퇴는 타인에게만 가능합니다. 탈퇴를 하세요. -0-
g_InterfaceManager.GetInterfaceString(eST_PARTY_FORCED_EXPULSION_HELP, szMessage, INTERFACE_STRING_LENGTH);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
else
{
// 강제 퇴장은 타겟을 설정하신 후 사용하십시오
g_InterfaceManager.GetInterfaceString(eST_PARTY_TARGET_FORCED_EXPULSION_HELP, szMessage, INTERFACE_STRING_LENGTH);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
//------------------------------------------------------------------------------
/**
*/
void uiPartyMan::ChangeMaster()
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TargetDialog * pTargetDlg = GET_CAST_DIALOG(TargetDialog, IM_TARGET_MANAGER::TARGET_DIALOG);
if (pTargetDlg && pTargetDlg->IsVisibleWindow())
{
MSG_CG_PARTY_CHANGE_MASTER_SYN sendMsg;
sendMsg.m_dwObjKey = pTargetDlg->GetTargetKey();
GlobalFunc::SendPacket( CI_GAMESERVERIDX, &sendMsg, sizeof (MSG_CG_PARTY_CHANGE_MASTER_SYN) );
}
else
{
// 파티장 위임은 타겟을 설정하신 후 사용하십시오
g_InterfaceManager.GetInterfaceString( eST_PARTY_CHANGE_MASTER_TARGET, szMessage, INTERFACE_STRING_LENGTH );
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::LeaveParty()
{
MSG_CG_PARTY_LEAVE_SYN sendMsg;
GlobalFunc::SendPacket( CI_GAMESERVERIDX, &sendMsg, sizeof (sendMsg) );
}
//------------------------------------------------------------------------------
/**
*/
void uiPartyMan::AskJoinParty( const char * szName )
{
//assert(dwObjKey);
#ifdef _KIKI_MODIFY_PARTY_MEMBER_NUM
if ( GameFramework::GetCurrentScene()->GetType() == SCENE_TYPE_FIELD )
{
// 파티원 제한: 5명
//
if(GetPartyNum() >= MAX_FIELD_PARTYMEMBER_NUM)
{
//< 파티원 수가 최대치라서 더이상 파티원을 받을 수 없다.
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString(5330,szMessage,INTERFACE_STRING_LENGTH);
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, szMessage);
return;
}
}
else
{
// 파티원 제한: 10명
//
if(GetPartyNum() >= MAX_PARTYMEMBER_NUM)
{
//< 파티원 수가 최대치라서 더이상 파티원을 받을 수 없다.
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString(5330,szMessage,INTERFACE_STRING_LENGTH);
GlobalFunc::OutputMsg_Warning(eOUTPUT_MSG_CHAT, szMessage);
return;
}
}
#endif
MSG_CG_PARTY_JOIN_SYN sync;
_tcsncpy(sync.m_TargetCharName, szName, MAX_CHARNAME_LENGTH);
GlobalFunc::SendPacketToGameServer(&sync, sizeof (sync));
}
//------------------------------------------------------------------------------
/**
*/
void uiPartyMan::UpdatePartyItemShareSystem()
{
SCENE_TYPE eCurScene = GameFramework::GetCurrentScene()->GetType();
BOOL bApply = FALSE;
bool create_battle_zone = false;
if( eCurScene == SCENE_TYPE_FIELD)
bApply =TRUE;
uiBattleZoneList* battlezone_list_dialog=(uiBattleZoneList*)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_BATTLEZONE_LIST);
if (battlezone_list_dialog)
{
if(battlezone_list_dialog->IsVisible())
{
create_battle_zone = true;
}
}
uiBattleZoneCreate* battlezon_create_dialog = (uiBattleZoneCreate*)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_BATTLEZONE_CREATE);
if (battlezon_create_dialog)
{
if(battlezon_create_dialog->IsVisible())
{
create_battle_zone = true;
}
}
if (create_battle_zone)
{
g_InterfaceManager.DeAttachFirstDialog(IM_PARTY_MANAGER::PARTY_ITEM_SHARE_SYSTEM);
return;
}
if( IsParty() && GetPartyNum() > 1 )
{
if (m_pUIItemShareSystem->IsVisibleWindow() == FALSE)
{
m_pUIItemShareSystem->ShowInterface(TRUE);
}
{
m_pUIItemShareSystem->ShowDivideItemControls(WZ_SHOW);//필드면 보인다.
}
}
else
{
if (m_pUIItemShareSystem->IsVisibleWindow() == TRUE)
{
m_pUIItemShareSystem->ShowInterface(FALSE);
}
}
m_pUIItemShareSystem->SetPartyLeader(IsLeader());
}
void uiPartyMan::SetTargetingMember(int party_member_index)
{
if (party_member_index >= (GetPartyNum() - 1)) // 자신이 포함되어 있어 1을 뺀다
{
return;
}
uiPartyMember* party_member = m_pUIPartyMembers[party_member_index];
if (party_member != NULL)
{
party_member->SetTargeting();
}
}
void uiPartyMan::NET_SEND_CG_PARTY_RETURN_C2G_LEADER_QUERY_ACK(byte byAnswer)
{
if( m_dequePartyReturn.size() <= 0)
return;
// 큐의 첫번째 놈을 처리한다.
stPendingUnexpectedStatus stUnexpectedPlyaer = *(m_dequePartyReturn.begin());
MSG_CG_PARTY_RETURN_C2G_LEADER_QUERY_ACK SendMsg;
SendMsg.m_dwPlayerKey = stUnexpectedPlyaer.m_dwReturnPlayerKey;// 서버에서 받은값 다시 돌려준다.
SendMsg.m_byAnswer = byAnswer;
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg) );
//처리 됐으니깐 비정상 종료 파티원 삭제한다.
DeleteUnExpectedPartyMember(stUnexpectedPlyaer.m_szReturnPlayerName);
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
uiBattlezone2Man* battlezone2_manager =
GET_DIALOG_MANAGER(uiBattlezone2Man, UIMAN_BATTLE_ZONE_MANAGER);
if (battlezone2_manager)
{
battlezone2_manager->DeleteDisConnectedUser(stUnexpectedPlyaer.m_szReturnPlayerName);
}
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
// 처리완료된 놈은 큐에서 뺀다
m_dequePartyReturn.pop_front();
// 아직도 큐에 복귀할 놈이 남아 있으면 다음 놈을 처리한다.
if( m_dequePartyReturn.size() > 0)
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,};
stUnexpectedPlyaer = *(m_dequePartyReturn.begin());
//5237 <%s>님이 재접속 하였습니다. 파티로 복귀시키겠습니까?
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1, g_InterfaceManager.GetInterfaceString( 5237 ),
stUnexpectedPlyaer.m_szReturnPlayerName );
uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if( pSystemMan )
{
pSystemMan->Sys_Confirm(szMessage, _callBack_Recall_PartyMember);
}
}
}
void uiPartyMan::NET_SEND_CG_PARTY_RETURN_C2G_MEMBER_QUERY_ACK(bool val)
{
MSG_CG_PARTY_RETURN_C2G_MEMBER_QUERY_ACK SendMsg;
SendMsg.m_wPartyKey = static_cast<WORD>(m_dwPendingPartyKey); //// 서버에서 받은값 다시 돌려준다.
if (val)
{
SendMsg.m_byAnswer = MSG_CG_PARTY_RETURN_C2G_MEMBER_QUERY_ACK::ACCEPT_JOIN;
}
else
{
SendMsg.m_byAnswer = MSG_CG_PARTY_RETURN_C2G_MEMBER_QUERY_ACK::REJECT_JOIN;
}
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg));
}
void uiPartyMan::DeleteUnExpectedPartyMember(TCHAR * pszCharName)
{
for ( size_t i = 0; i< m_vParty.size(); ++i)
{
uicPartyMemberInfoPlus & rMemberInfo = m_vParty[i];
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
if (rMemberInfo.IsConnected() == false)
#else
if( rMemberInfo.IsUnexpectedTerminate())
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
{
if( StrnCmp(rMemberInfo.Get().m_szCharName , pszCharName , MAX_CHARNAME_LENGTH) == 0 )
{
m_vParty.erase(m_vParty.begin() + i);
break;
}
}
}
this->uiPartySort();
this->uiShowAll();
}
void uiPartyMan::UpdateStatusIcon()
{
uiPartyMember* ui_party_member = NULL;
for (int party_member_index = 0; party_member_index < c_sMAX_PARTY_MEMBER_NUM; ++party_member_index)
{
ui_party_member = m_pUIPartyMembers[party_member_index];
if (ui_party_member != NULL &&
ui_party_member->IsVisible() == TRUE)
{
ui_party_member->UpdateStatusIcon();
}
}
}
#ifdef _DH_BATTLEZONE2_
void uiPartyMan::SetBattleZoneReady(int object_key, bool is_ready)
{
uicPartyMemberInfoPlus* member_info = GetPartyMemberInfo(object_key);
if (member_info != NULL)
{
member_info->set_is_ready(is_ready);
}
}
void uiPartyMan::AllCancleBattleZoneReady()
{
for (size_t i = 0; i< m_vParty.size(); ++i)
{
m_vParty[i].set_is_ready(false);
}
}
void uiPartyMan::CheckOutputZoneType()
{
int real_size;
if (this->GetPartyNum())
{
real_size = this->GetPartyNum() - 1;
}
else
{
real_size = 0;
}
for (int i = 0; i < real_size; ++i)
{
m_pUIPartyMembers[i]->CheckOutputZoneType();
}
}
#endif //_DH_BATTLEZONE2_
void uiPartyMan::Send_CG_PARTY_ROOM_FORCE_LEAVE_SYN()
{
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
if (is_disconnected_uesr_kick_ == false)
{
//정상 유저 강퇴
TargetDialog* target_dialog = GET_CAST_DIALOG(TargetDialog, IM_TARGET_MANAGER::TARGET_DIALOG);
if(g_dwTargetKey == target_dialog->GetTargetKey())
{
MSG_CG_PARTY_FORCED_EXPULSION_SYN send_message;
send_message.m_dwObjKey = g_dwTargetKey;
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_message, sizeof (MSG_CG_PARTY_FORCED_EXPULSION_SYN));
}
}
else
{
// 비정상 종료자 강퇴 요청
MSG_CG_PARTY_RETURN_G2C_MEMBER_REMOVE_SYN send_packet;
send_packet.request_party_key_ = GetPartyKey();
StrnCopy(send_packet.leave_member_name_,
kick_player_name_,
MAX_CHARNAME_LENGTH);
GlobalFunc::SendPacket(CI_GAMESERVERIDX,
&send_packet,
sizeof(send_packet));
}
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
}
//------------------------------------------------------------------------------
// EOF
//------------------------------------------------------------------------------