1
This commit is contained in:
parent
36c8506105
commit
acbeb77444
8 changed files with 443 additions and 389 deletions
|
|
@ -32,7 +32,7 @@ CDNGuildSystem::CDNGuildSystem ()
|
|||
|
||||
m_TickDoUpdate = 0;
|
||||
|
||||
m_nResetWareHour = 4; // 기본값
|
||||
m_nResetWareHour = 4; // 扁夯蔼
|
||||
DNTableFileFormat* pSox = GetDNTable(CDnTableDB::TSCHEDULE );
|
||||
if (pSox)
|
||||
m_nResetWareHour = pSox->GetFieldFromLablePtr(CDNSchedule::ResetGuildWareLimit + 1, "_Hour")->GetInteger();
|
||||
|
|
@ -47,26 +47,26 @@ DWORD CDNGuildSystem::Open (DWORD dwSize)
|
|||
{
|
||||
for (DWORD i=0; i<dwSize; i++)
|
||||
{
|
||||
// 서버에 따른 길드인스턴스 생성
|
||||
// 辑滚俊 蝶弗 辨靛牢胶畔胶 积己
|
||||
CDNGuildBase* pGuild = CreateGuildInstance ();
|
||||
DN_ASSERT(NULL != pGuild, "Invalid!");
|
||||
|
||||
// 길드 초기화
|
||||
// 辨靛 檬扁拳
|
||||
DWORD dwRetVal = pGuild->Open (this);
|
||||
if (NOERROR != dwRetVal)
|
||||
DN_RETURN (dwRetVal);
|
||||
|
||||
// 길드자원 풀에 추가
|
||||
// 辨靛磊盔 钱俊 眠啊
|
||||
m_Pool.push (pGuild);
|
||||
|
||||
// 전체 길드목록에 추가
|
||||
// 傈眉 辨靛格废俊 眠啊
|
||||
m_MainList.push_back (pGuild);
|
||||
}
|
||||
|
||||
// 권한 초기화
|
||||
// 鼻茄 檬扁拳
|
||||
InitAuth();
|
||||
|
||||
// 길드기본 인원
|
||||
// 辨靛扁夯 牢盔
|
||||
m_DefaultSize = GUILDSIZE_DEF;
|
||||
|
||||
m_bOpen = true;
|
||||
|
|
@ -76,7 +76,7 @@ DWORD CDNGuildSystem::Open (DWORD dwSize)
|
|||
|
||||
void CDNGuildSystem::Close()
|
||||
{
|
||||
// 전체 길드자원 해제
|
||||
// 傈眉 辨靛磊盔 秦力
|
||||
std::vector<class CDNGuildBase*, boost::pool_allocator<class CDNGuildBase*>>::iterator iter = m_MainList.begin ();
|
||||
|
||||
for (; iter != m_MainList.end(); iter++)
|
||||
|
|
@ -108,14 +108,14 @@ void CDNGuildSystem::Close()
|
|||
|
||||
DWORD CDNGuildSystem::Release (CDNGuildBase* pGuild)
|
||||
{
|
||||
// 길드 자원을 참조할 정보를 임시 복사
|
||||
// 辨靛 磊盔阑 曼炼且 沥焊甫 烙矫 汗荤
|
||||
const TGuildUID GuildUID = pGuild->GetUID();
|
||||
|
||||
// 길드자원 초기화
|
||||
// 辨靛磊盔 檬扁拳
|
||||
pGuild->Reset ();
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// 동기화 시작
|
||||
// 悼扁拳 矫累
|
||||
ScopeLock <CSyncLock> AutoLock (GetLock());
|
||||
|
||||
#if !defined(_FINAL_BUILD)
|
||||
|
|
@ -126,10 +126,10 @@ DWORD CDNGuildSystem::Release (CDNGuildBase* pGuild)
|
|||
}
|
||||
#endif // _FINAL_BUILD
|
||||
|
||||
// 현재리스트에서 삭제한다
|
||||
// 泅犁府胶飘俊辑 昏力茄促
|
||||
m_CurrList.erase (GuildUID);
|
||||
|
||||
// 메모리풀에 반환
|
||||
// 皋葛府钱俊 馆券
|
||||
m_Pool.push (pGuild);
|
||||
|
||||
return NOERROR;
|
||||
|
|
@ -138,7 +138,7 @@ DWORD CDNGuildSystem::Release (CDNGuildBase* pGuild)
|
|||
CDNGuildBase* CDNGuildSystem::At (const TGuildUID pGuildUID)
|
||||
{
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// 동기화 시작
|
||||
// 悼扁拳 矫累
|
||||
ScopeLock <CSyncLock> AutoLock (GetLock());
|
||||
|
||||
std::map<TGuildUID, class CDNGuildBase*>::iterator iter = m_CurrList.find(pGuildUID);
|
||||
|
|
@ -147,7 +147,7 @@ CDNGuildBase* CDNGuildSystem::At (const TGuildUID pGuildUID)
|
|||
return NULL;
|
||||
|
||||
CDNGuildBase* pGuild = iter->second;
|
||||
// CDNGuildManager::Release(...) 에서 CDNGuildBase 초기화 이후에 반환하므로 타이밍 문제로 이런 경우가 발생할 수 있음
|
||||
// CDNGuildManager::Release(...) 俊辑 CDNGuildBase 檬扁拳 捞饶俊 馆券窍骨肺 鸥捞怪 巩力肺 捞繁 版快啊 惯积且 荐 乐澜
|
||||
if (!pGuild->IsSet())
|
||||
return NULL;
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ const CDNGuildBase* CDNGuildSystem::At (const TGuildUID pGuildUID) const
|
|||
CDNGuildBase* CDNGuildSystem::Get (const TGuild* pInfo)
|
||||
{
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// 동기화 시작
|
||||
// 悼扁拳 矫累
|
||||
ScopeLock <CSyncLock> AutoLock (GetLock());
|
||||
|
||||
std::map<TGuildUID, class CDNGuildBase*>::iterator iter = m_CurrList.find(pInfo->GuildView.GuildUID);
|
||||
|
|
@ -173,19 +173,19 @@ CDNGuildBase* CDNGuildSystem::Get (const TGuild* pInfo)
|
|||
return (iter->second);
|
||||
|
||||
CDNGuildBase* pGuild = NULL;
|
||||
// 메모리풀에 자원이 없을 경우
|
||||
// 皋葛府钱俊 磊盔捞 绝阑 版快
|
||||
if (m_Pool.empty())
|
||||
{
|
||||
pGuild = CreateGuildInstance();
|
||||
if (!pGuild)
|
||||
DN_RETURN (NULL);
|
||||
|
||||
// 길드 초기화
|
||||
// 辨靛 檬扁拳
|
||||
DWORD dwRetVal = pGuild->Open (this);
|
||||
if (NOERROR != dwRetVal)
|
||||
DN_RETURN(NULL);
|
||||
|
||||
// 전체 길드목록에 추가
|
||||
// 傈眉 辨靛格废俊 眠啊
|
||||
m_MainList.push_back (pGuild);
|
||||
}
|
||||
else
|
||||
|
|
@ -199,14 +199,14 @@ CDNGuildBase* CDNGuildSystem::Get (const TGuild* pInfo)
|
|||
|
||||
DN_ASSERT(NULL != pGuild, "Invalid!");
|
||||
DN_ASSERT(pGuild->IsOpen(), "Invalid!");
|
||||
DN_ASSERT(!pGuild->IsSet(), "Invalid!"); // 기존에 세팅된 정보가 없어야 함
|
||||
DN_ASSERT(!pGuild->IsEnable(), "Invalid!"); // 액세스가 비활성화 상태이어야 함
|
||||
DN_ASSERT(!pGuild->IsSet(), "Invalid!"); // 扁粮俊 技泼等 沥焊啊 绝绢具 窃
|
||||
DN_ASSERT(!pGuild->IsEnable(), "Invalid!"); // 咀技胶啊 厚劝己拳 惑怕捞绢具 窃
|
||||
|
||||
pGuild->ResetAccess(); // 액세스 재활성화
|
||||
pGuild->ResetAccess(); // 咀技胶 犁劝己拳
|
||||
pGuild->Set (pInfo);
|
||||
|
||||
|
||||
// 운용중인 길드리스트에 추가
|
||||
// 款侩吝牢 辨靛府胶飘俊 眠啊
|
||||
std::pair<std::map<TGuildUID, class CDNGuildBase*>::iterator, bool> RetVal
|
||||
= m_CurrList.insert(std::map<TGuildUID, class CDNGuildBase*>::value_type(pInfo->GuildView.GuildUID, pGuild));
|
||||
|
||||
|
|
@ -276,26 +276,26 @@ void CDNGuildSystem::DoUpdate (DWORD CurTick)
|
|||
DN_ASSERT(IsOpen(), "Not Opened!");
|
||||
DN_ASSERT(!IsLock(), "Already Locked!");
|
||||
|
||||
// 전체 길드 정보갱신 (10초)
|
||||
// 傈眉 辨靛 沥焊盎脚 (10檬)
|
||||
if (GUILDMGRUPDTERM > GetTickTerm (m_TickDoUpdate, CurTick))
|
||||
return;
|
||||
|
||||
m_TickDoUpdate = CurTick;
|
||||
|
||||
// 복사본을 만든다
|
||||
std::vector <std::pair<TGuildUID, class CDNGuildBase*>, boost::pool_allocator<TGuildUID>> aList;
|
||||
// 汗荤夯阑 父电促
|
||||
std::vector <std::pair<TGuildUID, class CDNGuildBase*>> aList;
|
||||
|
||||
{
|
||||
ScopeLock <CSyncLock> AutoLock (GetLock());
|
||||
std::copy(m_CurrList.begin(), m_CurrList.end(), std::back_inserter(aList));
|
||||
}
|
||||
|
||||
// 등록된 길드가 없으면 리턴
|
||||
// 殿废等 辨靛啊 绝栏搁 府畔
|
||||
if (aList.empty ())
|
||||
return;
|
||||
|
||||
|
||||
// 길드이벤트에 대해 업데이트
|
||||
// 辨靛捞亥飘俊 措秦 诀单捞飘
|
||||
std::vector <std::pair<TGuildUID, class CDNGuildBase*>, boost::pool_allocator<TGuildUID>>::iterator iter = aList.begin ();
|
||||
|
||||
for (; iter != aList.end(); iter++)
|
||||
|
|
@ -327,15 +327,15 @@ void CDNGuildSystem::OnRecvMaDismissGuild (const MADismissGuild *pPacket)
|
|||
DN_ASSERT(0 != pPacket->nManagedID, "Invalid!");
|
||||
#endif // _WORK
|
||||
|
||||
// 자신이 MA 에 보냈던 패킷은 송신 이전에 본 서버에서 먼저 처리되었음을 전제로 하므로 추가로 처리하지 않음
|
||||
// 磊脚捞 MA 俊 焊陈带 菩哦篮 价脚 捞傈俊 夯 辑滚俊辑 刚历 贸府登菌澜阑 傈力肺 窍骨肺 眠啊肺 贸府窍瘤 臼澜
|
||||
if (pPacket->nManagedID == g_Config.nManagedID)
|
||||
return;
|
||||
|
||||
// 이미 해체된 길드인지 확인한다.
|
||||
// 捞固 秦眉等 辨靛牢瘤 犬牢茄促.
|
||||
if (IsDismissExist (pPacket->GuildUID))
|
||||
return;
|
||||
|
||||
// 길드 해산 목록에 등록
|
||||
// 辨靛 秦魂 格废俊 殿废
|
||||
AddDismiss (pPacket->GuildUID);
|
||||
|
||||
CDNGuildBase* pGuild = At (pPacket->GuildUID);
|
||||
|
|
@ -347,7 +347,7 @@ void CDNGuildSystem::OnRecvMaDismissGuild (const MADismissGuild *pPacket)
|
|||
#endif
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드 자원 반납
|
||||
// 辨靛 磊盔 馆吵
|
||||
pGuild->DisableAttach ();
|
||||
#endif
|
||||
|
||||
|
|
@ -384,11 +384,11 @@ void CDNGuildSystem::OnRecvMaAddGuildMember (const MAAddGuildMember *pPacket)
|
|||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
||||
//위치정보
|
||||
//困摹沥焊
|
||||
TCommunityLocation Location;
|
||||
Location.Reset();
|
||||
|
||||
// 길드원 정보 추가
|
||||
// 辨靛盔 沥焊 眠啊
|
||||
TGuildMember GuildMember;
|
||||
GuildMember.Set(pPacket->nAccountDBID, pPacket->nCharacterDBID, pPacket->wszCharacterName, pPacket->nJob, pPacket->cLevel, GUILDROLE_TYPE_JUNIOR, pPacket->JoinDate);
|
||||
|
||||
|
|
@ -398,7 +398,7 @@ void CDNGuildSystem::OnRecvMaAddGuildMember (const MAAddGuildMember *pPacket)
|
|||
pGuild->SendAddGuildMember (pPacket->nAccountDBID, pPacket->nCharacterDBID, pPacket->wszCharacterName, pPacket->nJob, pPacket->cLevel, pPacket->JoinDate, &Location);
|
||||
}
|
||||
|
||||
// 길드원 정보 제거
|
||||
// 辨靛盔 沥焊 力芭
|
||||
void CDNGuildSystem::OnRecvMaDelGuildMember (const MADelGuildMember *pPacket)
|
||||
{
|
||||
CDNGuildBase* pGuild = NULL;
|
||||
|
|
@ -412,11 +412,11 @@ void CDNGuildSystem::OnRecvMaDelGuildMember (const MADelGuildMember *pPacket)
|
|||
|
||||
pGuild->SendDelGuildMember (pPacket->nAccountDBID, pPacket->nCharacterDBID, pPacket->bIsExiled);
|
||||
|
||||
// 제거할 길드원 포함하여 위에서 우선 통지 메시지 부터 보냄, 다만 게임서버는 해당 사용자의 작업 스레드에 도달 했을 경우는 지연삭제하여도 이미 지워진 상태이므로 전체 사용자를 대상으로 찾아야 함 (20100210 b4nfter)
|
||||
// 力芭且 辨靛盔 器窃窍咯 困俊辑 快急 烹瘤 皋矫瘤 何磐 焊晨, 促父 霸烙辑滚绰 秦寸 荤侩磊狼 累诀 胶饭靛俊 档崔 沁阑 版快绰 瘤楷昏力窍咯档 捞固 瘤况柳 惑怕捞骨肺 傈眉 荤侩磊甫 措惑栏肺 茫酒具 窃 (20100210 b4nfter)
|
||||
pGuild->DelMember (pPacket->nCharacterDBID);
|
||||
}
|
||||
|
||||
// 길드정보 변경
|
||||
// 辨靛沥焊 函版
|
||||
void CDNGuildSystem::OnRecvMaChangeGuildInfo (const MAChangeGuildInfo *pPacket)
|
||||
{
|
||||
CDNGuildBase* pGuild = NULL;
|
||||
|
|
@ -430,12 +430,12 @@ void CDNGuildSystem::OnRecvMaChangeGuildInfo (const MAChangeGuildInfo *pPacket)
|
|||
|
||||
switch (pPacket->btGuildUpdate)
|
||||
{
|
||||
// 공지변경
|
||||
// 傍瘤函版
|
||||
case GUILDUPDATE_TYPE_NOTICE:
|
||||
MaChangeNotification (pGuild, pPacket);
|
||||
break;
|
||||
|
||||
// 직급 권한 변경
|
||||
// 流鞭 鼻茄 函版
|
||||
case GUILDUPDATE_TYPE_ROLEAUTH:
|
||||
MaChangeRoleAuth (pGuild, pPacket);
|
||||
break;
|
||||
|
|
@ -451,7 +451,7 @@ void CDNGuildSystem::OnRecvMaChangeGuildInfo (const MAChangeGuildInfo *pPacket)
|
|||
break;
|
||||
}
|
||||
|
||||
// 현재 서버에 접속 중인 길드원들에게 통보
|
||||
// 泅犁 辑滚俊 立加 吝牢 辨靛盔甸俊霸 烹焊
|
||||
pGuild->SendChangeGuildInfo (pPacket->nAccountDBID, pPacket->nCharacterDBID, pPacket->btGuildUpdate, pPacket->Int1, pPacket->Int2, pPacket->Int3, pPacket->Int4, pPacket->Int64, pPacket->Text);
|
||||
}
|
||||
|
||||
|
|
@ -470,17 +470,17 @@ void CDNGuildSystem::OnRecvMaChangeGuildMemberInfo (const MAChangeGuildMemberInf
|
|||
|
||||
switch (pPacket->btGuildMemberUpdate)
|
||||
{
|
||||
// 자기소개 변경 (길드원자신)
|
||||
// 磊扁家俺 函版 (辨靛盔磊脚)
|
||||
case GUILDMEMBUPDATE_TYPE_INTRODUCE:
|
||||
MaModifyMembIntro (pGuild, pPacket);
|
||||
break;
|
||||
|
||||
// 직급 변경
|
||||
// 流鞭 函版
|
||||
case GUILDMEMBUPDATE_TYPE_ROLE:
|
||||
MaModifyTypeRole (pGuild, pPacket);
|
||||
break;
|
||||
|
||||
// 길드장 위임
|
||||
// 辨靛厘 困烙
|
||||
case GUILDMEMBUPDATE_TYPE_GUILDMASTER:
|
||||
MaDelegateGuildMaster (pGuild, pPacket);
|
||||
break;
|
||||
|
|
@ -532,13 +532,13 @@ void CDNGuildSystem::OnRecvMaDoorsGuildChat(const MADoorsGuildChat *pPacket)
|
|||
pGuild->SendDoorsGuildChat(pPacket->nCharacterDBID, pPacket->wszChatMsg, pPacket->nLen);
|
||||
return;
|
||||
}
|
||||
_DANGER_POINT_MSG(L"길드인원이 아닌데 모바일에서 메세지가 들어왔다");
|
||||
_DANGER_POINT_MSG(L"辨靛牢盔捞 酒囱单 葛官老俊辑 皋技瘤啊 甸绢吭促");
|
||||
}
|
||||
#endif //#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
|
||||
|
||||
void CDNGuildSystem::OnRecvMaGuildChangeName(const MAGuildChangeName *pPacket)
|
||||
{
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
if (!pPacket->GuildUID.IsSet())
|
||||
return;
|
||||
|
||||
|
|
@ -546,7 +546,7 @@ void CDNGuildSystem::OnRecvMaGuildChangeName(const MAGuildChangeName *pPacket)
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
|
@ -558,7 +558,7 @@ void CDNGuildSystem::OnRecvMaGuildChangeName(const MAGuildChangeName *pPacket)
|
|||
|
||||
void CDNGuildSystem::OnRecvMaGuildChangeMark(const MAGuildChangeMark *pPacket)
|
||||
{
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
if (!pPacket->GuildUID.IsSet())
|
||||
return;
|
||||
|
||||
|
|
@ -566,7 +566,7 @@ void CDNGuildSystem::OnRecvMaGuildChangeMark(const MAGuildChangeMark *pPacket)
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
|
@ -580,7 +580,7 @@ void CDNGuildSystem::OnRecvMaGuildChangeMark(const MAGuildChangeMark *pPacket)
|
|||
|
||||
void CDNGuildSystem::OnRecvMaGuildUpdateExp( const MAUpdateGuildExp* pPacket )
|
||||
{
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
if (!pPacket->GuildUID.IsSet())
|
||||
return;
|
||||
|
||||
|
|
@ -588,7 +588,7 @@ void CDNGuildSystem::OnRecvMaGuildUpdateExp( const MAUpdateGuildExp* pPacket )
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
|
@ -599,7 +599,7 @@ void CDNGuildSystem::OnRecvMaGuildUpdateExp( const MAUpdateGuildExp* pPacket )
|
|||
|
||||
void CDNGuildSystem::OnRecvMaEnrollGuildWar(const MAEnrollGuildWar *pPacket)
|
||||
{
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
if (!pPacket->GuildUID.IsSet())
|
||||
return;
|
||||
|
||||
|
|
@ -607,7 +607,7 @@ void CDNGuildSystem::OnRecvMaEnrollGuildWar(const MAEnrollGuildWar *pPacket)
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
|
@ -638,14 +638,14 @@ void CDNGuildSystem::OnRecvCsGetGuildInfo (CDNUserSession * pSession, const CSGe
|
|||
CDNGuildBase* pGuild = this->At (GuildUID);
|
||||
if (pGuild)
|
||||
{
|
||||
// 길드 정보 있음
|
||||
// 辨靛 沥焊 乐澜
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
||||
if( pGuild->GetRecvAllMember() == false ) return; // 길드원목록 다 받았는지 체크
|
||||
// 패킷을 구성한다
|
||||
if( pGuild->GetRecvAllMember() == false ) return; // 辨靛盔格废 促 罐疽绰瘤 眉农
|
||||
// 菩哦阑 备己茄促
|
||||
pSession->SendGetGuildInfo(pGuild, ERROR_NONE);
|
||||
pSession->SendGetGuildMember(pGuild, ERROR_NONE);
|
||||
return;
|
||||
|
|
@ -653,17 +653,17 @@ void CDNGuildSystem::OnRecvCsGetGuildInfo (CDNUserSession * pSession, const CSGe
|
|||
|
||||
if (IsDismissExist(GuildUID))
|
||||
{
|
||||
// 길드가 이미 해체 되었다면 길드 시각정보를 초기화하여 주변 동기화
|
||||
// 辨靛啊 捞固 秦眉 登菌促搁 辨靛 矫阿沥焊甫 檬扁拳窍咯 林函 悼扁拳
|
||||
pSession->ResetGuildSelfView ();
|
||||
return;
|
||||
}
|
||||
|
||||
// P.S.> 길드 정보가 존재하지 않더라도 여기에서는 절대 DB 로 직접 확인 요청을 보내서는 않됨 (사용자 로그인 시 1회 발생)
|
||||
// P.S.> 辨靛 沥焊啊 粮犁窍瘤 臼歹扼档 咯扁俊辑绰 例措 DB 肺 流立 犬牢 夸没阑 焊郴辑绰 臼凳 (荤侩磊 肺弊牢 矫 1雀 惯积)
|
||||
}
|
||||
|
||||
void CDNGuildSystem::OnRecvCsGetGuildWareHistory (CDNUserSession * pSession, CSGetGuildWareHistory *pPacket)
|
||||
{
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
const TGuildUID GuildUID = pSession->GetGuildSelfView().GuildUID;
|
||||
if (!GuildUID.IsSet())
|
||||
return;
|
||||
|
|
@ -672,12 +672,12 @@ void CDNGuildSystem::OnRecvCsGetGuildWareHistory (CDNUserSession * pSession, CSG
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
||||
// 길드창고 히스토리 이벤트 처리
|
||||
// 辨靛芒绊 洒胶配府 捞亥飘 贸府
|
||||
pGuild->RecvCsGetGuildWareHistory (pSession, pPacket);
|
||||
}
|
||||
|
||||
|
|
@ -687,7 +687,7 @@ void CDNGuildSystem::OnRecvCsCloseGuildWare (CDNUserSession * pSession)
|
|||
DN_ASSERT(!IsLock(), "Already Locked!");
|
||||
DN_ASSERT(NULL != pSession, "Invalid!");
|
||||
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
const TGuildUID GuildUID = pSession->GetGuildSelfView().GuildUID;
|
||||
if (!GuildUID.IsSet())
|
||||
return;
|
||||
|
|
@ -696,12 +696,12 @@ void CDNGuildSystem::OnRecvCsCloseGuildWare (CDNUserSession * pSession)
|
|||
if (!pGuild) return;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return;
|
||||
#endif
|
||||
|
||||
// 길드창고 열기 이벤트 처리
|
||||
// 辨靛芒绊 凯扁 捞亥飘 贸府
|
||||
pGuild->RecvCsCloseGuildWare (pSession);
|
||||
}
|
||||
|
||||
|
|
@ -711,7 +711,7 @@ bool CDNGuildSystem::OnRecvApiOpenGuildWare (CDNUserSession * pSession)
|
|||
DN_ASSERT(!IsLock(), "Already Locked!");
|
||||
DN_ASSERT(NULL != pSession, "Invalid!");
|
||||
|
||||
// 해당길드를 찾는다.
|
||||
// 秦寸辨靛甫 茫绰促.
|
||||
const TGuildUID GuildUID = pSession->GetGuildSelfView().GuildUID;
|
||||
if (!GuildUID.IsSet())
|
||||
return false;
|
||||
|
|
@ -722,13 +722,13 @@ bool CDNGuildSystem::OnRecvApiOpenGuildWare (CDNUserSession * pSession)
|
|||
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable())
|
||||
return false;
|
||||
#endif
|
||||
|
||||
// 길드창고 열기 이벤트 처리
|
||||
// 辨靛芒绊 凯扁 捞亥飘 贸府
|
||||
pGuild->RecvApiOpenGuildWare (pSession);
|
||||
|
||||
return true;
|
||||
|
|
@ -820,17 +820,17 @@ void CDNGuildSystem::SetRoleLimitation (TGuild* pDestInfo)
|
|||
{
|
||||
if (pDestInfo->wGuildRoleAuth[i] == -1 || pDestInfo->nRoleMaxItem[i] == -1 || pDestInfo->nRoleMaxCoin[i] == -1)
|
||||
{
|
||||
// 패스한다.
|
||||
// 菩胶茄促.
|
||||
}
|
||||
else
|
||||
{
|
||||
// 권한
|
||||
// 鼻茄
|
||||
wGuildRoleAuth [i] = pDestInfo->wGuildRoleAuth[i];
|
||||
|
||||
// 아이템제한
|
||||
// 酒捞袍力茄
|
||||
nRoleMaxItem [i] = pDestInfo->nRoleMaxItem[i];
|
||||
|
||||
// 코인 제한
|
||||
// 内牢 力茄
|
||||
nRoleMaxCoin [i] = pDestInfo->nRoleMaxCoin[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -842,26 +842,26 @@ void CDNGuildSystem::SetRoleLimitation (TGuild* pDestInfo)
|
|||
|
||||
void CDNGuildSystem::UpdateGuildResource (TAGetGuildInfo *pPacket)
|
||||
{
|
||||
// 길드 권한 적용
|
||||
// 辨靛 鼻茄 利侩
|
||||
this->SetAuthMust (pPacket->Info.wGuildRoleAuth);
|
||||
|
||||
const TGuildUID GuildUID(pPacket->cWorldSetID, pPacket->nGuildDBID);
|
||||
|
||||
CDNGuildBase* pGuild = this->At (GuildUID);
|
||||
|
||||
// 역할 세팅
|
||||
// 开且 技泼
|
||||
SetRoleLimitation (&pPacket->Info);
|
||||
|
||||
// 길드자원이 없는 경우 (해당서버에 접속하는 첫 길드원일 경우)
|
||||
// 辨靛磊盔捞 绝绰 版快 (秦寸辑滚俊 立加窍绰 霉 辨靛盔老 版快)
|
||||
if (!pGuild)
|
||||
{
|
||||
// 길드자원을 얻어온다.
|
||||
// 辨靛磊盔阑 掘绢柯促.
|
||||
pGuild = this->Get (&pPacket->Info);
|
||||
|
||||
if (!pGuild) return; // 할당실패
|
||||
if (!pGuild) return; // 且寸角菩
|
||||
#if defined(_VILLAGESERVER)
|
||||
pGuild->SetGuildWarScheduleID(g_pGuildWarManager->GetScheduleID());
|
||||
// 만약 우승길드 이면
|
||||
// 父距 快铰辨靛 捞搁
|
||||
if( g_pGuildWarManager->GetPreWinGuildUID() == GuildUID )
|
||||
{
|
||||
CDNGuildVillage* pGuildVillage = static_cast<CDNGuildVillage *>(pGuild);
|
||||
|
|
@ -871,7 +871,7 @@ void CDNGuildSystem::UpdateGuildResource (TAGetGuildInfo *pPacket)
|
|||
pGuild->SetGuildWarScheduleID(g_pMasterConnectionManager->GetGuildWarScheduleID(pPacket->cWorldSetID));
|
||||
#endif // #if defined(_VILLAGESERVER)
|
||||
}
|
||||
else // 기존 길드자원이 있는 경우
|
||||
else // 扁粮 辨靛磊盔捞 乐绰 版快
|
||||
pGuild->Set (&pPacket->Info);
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
|
|
@ -991,7 +991,7 @@ void CDNGuildSystem::MaDelegateGuildMaster (CDNGuildBase* pGuild, const MAChange
|
|||
|
||||
ScopeLock <CSyncLock> AutoLock (pGuild->GetLock());
|
||||
|
||||
// 위임받은 자
|
||||
// 困烙罐篮 磊
|
||||
pGuildMember = pGuild->GetMemberInfoAsync (pPacket->nChgCharacterDBID);
|
||||
if (pGuildMember)
|
||||
{
|
||||
|
|
@ -999,7 +999,7 @@ void CDNGuildSystem::MaDelegateGuildMaster (CDNGuildBase* pGuild, const MAChange
|
|||
pGuild->SetGuildMaster( pGuildMember );
|
||||
}
|
||||
|
||||
// 요청한 자 (기존마스터)
|
||||
// 夸没茄 磊 (扁粮付胶磐)
|
||||
pGuildMember = pGuild->GetMemberInfoAsync (pPacket->nReqCharacterDBID);
|
||||
if (pGuildMember)
|
||||
pGuildMember->btGuildRole = static_cast<BYTE>(GUILDROLE_TYPE_SUBMASTER);
|
||||
|
|
@ -1014,15 +1014,15 @@ void CDNGuildSystem::MaChangeConnectState (CDNGuildBase* pGuild, const MAChangeG
|
|||
if (!pGuildMember)
|
||||
return;
|
||||
|
||||
//로그아웃 처리
|
||||
//肺弊酒眶 贸府
|
||||
switch(pPacket->Int1)
|
||||
{
|
||||
case _LOCATION_NONE: //로그 아웃
|
||||
case _LOCATION_NONE: //肺弊 酒眶
|
||||
{
|
||||
pGuildMember->Location.Reset ();
|
||||
}
|
||||
break;
|
||||
case _LOCATION_MOVE: //로그인
|
||||
case _LOCATION_MOVE: //肺弊牢
|
||||
{
|
||||
pGuildMember->Location.cServerLocation = _LOCATION_MOVE;
|
||||
}
|
||||
|
|
@ -1088,17 +1088,17 @@ int CDNGuildSystem::BuyGuildRewardItem( CDNUserSession * pSession, int nItemID )
|
|||
if (!pGuild) return ERROR_GUILD_NOTEXIST_GUILD;
|
||||
|
||||
#if !defined( PRE_ADD_NODELETEGUILD )
|
||||
// 길드가 존재한다.
|
||||
// 辨靛啊 粮犁茄促.
|
||||
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
||||
if (FALSE == pGuild->IsEnable()) return ERROR_GUILD_NOTEXIST_GUILD;
|
||||
#endif
|
||||
|
||||
//길드보상아이템 구입
|
||||
//辨靛焊惑酒捞袍 备涝
|
||||
TGuildRewardItemData* pGuildRewardItemData = g_pDataManager->GetGuildRewardItemData(nItemID) ;
|
||||
|
||||
if(pGuildRewardItemData)
|
||||
{
|
||||
// 조건 체크
|
||||
// 炼扒 眉农
|
||||
if( pGuildRewardItemData->nItemType >= GUILDREWARDEFFECT_TYPE_CNT )
|
||||
{
|
||||
pSession->SendBuyGuildRewardItem(ERROR_ITEM_FAIL, 0);
|
||||
|
|
@ -1120,7 +1120,7 @@ int CDNGuildSystem::BuyGuildRewardItem( CDNUserSession * pSession, int nItemID )
|
|||
|
||||
if( pGuildRewardItemData->nItemType == GUILDREWARDEFFECT_TYPE_MAXGUILDWARE )
|
||||
{
|
||||
// 길드 창고 최대크기 체크
|
||||
// 辨靛 芒绊 弥措农扁 眉农
|
||||
TGuildRewardItemData* PrevGuildRewardItemData = g_pDataManager->GetGuildRewardItemData(pGuildRewardItemData->nCheckID);
|
||||
short nGuildWareSize = pGuild->GetWareSize();
|
||||
int nExtendWareSize = pGuildRewardItemData->nTypeParam1;
|
||||
|
|
@ -1138,12 +1138,12 @@ int CDNGuildSystem::BuyGuildRewardItem( CDNUserSession * pSession, int nItemID )
|
|||
if( pGuildRewardItemData->nItemType == GUILDREWARDEFFECT_TYPE_GUILDITEM ||
|
||||
pGuildRewardItemData->nItemType == GUILDREWARDEFFECT_TYPE_MAKEGUILDMARK )
|
||||
{
|
||||
// 게임 치장형 아이템
|
||||
// 霸烙 摹厘屈 酒捞袍
|
||||
nRet = pSession->GetItem()->ProcessBuyPrivateGuildRewardItem( pGuildRewardItemData, 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// 길드전체 효과
|
||||
// 辨靛傈眉 瓤苞
|
||||
nRet = pSession->GetItem()->ProcessBuyPublicGuildRewardItem( pGuild->GetGuildRewardItem(), pGuildRewardItemData, GuildUID.nDBID );
|
||||
}
|
||||
}
|
||||
|
|
@ -1183,8 +1183,8 @@ void CDNGuildSystem::InitAuth ()
|
|||
m_AuthRstt[iIndex].Reset();
|
||||
}
|
||||
|
||||
// 최초
|
||||
// GUILDROLE_TYPE_MASTER 길드장
|
||||
// 弥檬
|
||||
// GUILDROLE_TYPE_MASTER 辨靛厘
|
||||
m_AuthBase[GUILDROLE_TYPE_MASTER].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_MASTER].Set(GUILDAUTH_TYPE_NOTICE, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_MASTER].Set(GUILDAUTH_TYPE_INVITE, 1);
|
||||
|
|
@ -1195,7 +1195,7 @@ void CDNGuildSystem::InitAuth ()
|
|||
m_AuthBase[GUILDROLE_TYPE_MASTER].Set(GUILDAUTH_TYPE_WITHDRAW, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_MASTER].Set(GUILDAUTH_TYPE_HOMEPAGE, 1);
|
||||
|
||||
// GUILDROLE_TYPE_SUBMASTER 길드부장
|
||||
// GUILDROLE_TYPE_SUBMASTER 辨靛何厘
|
||||
m_AuthBase[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_NOTICE, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_INVITE, 1);
|
||||
|
|
@ -1205,36 +1205,36 @@ void CDNGuildSystem::InitAuth ()
|
|||
m_AuthBase[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_TAKEITEM, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_WITHDRAW, 1);
|
||||
|
||||
// GUILDROLE_TYPE_SENIOR 선임길드원
|
||||
// GUILDROLE_TYPE_SENIOR 急烙辨靛盔
|
||||
m_AuthBase[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_INVITE, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_SKILL, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_STOREITEM, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_TAKEITEM, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_WITHDRAW, 1);
|
||||
|
||||
// GUILDROLE_TYPE_REGULAR 정식길드원
|
||||
// GUILDROLE_TYPE_REGULAR 沥侥辨靛盔
|
||||
m_AuthBase[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_SKILL, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_STOREITEM, 1);
|
||||
m_AuthBase[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_TAKEITEM, 1);
|
||||
|
||||
|
||||
// 불가
|
||||
// 阂啊
|
||||
|
||||
// 길드부장
|
||||
// 辨靛何厘
|
||||
#if !defined( PRE_ADD_CHANGEGUILDROLE )
|
||||
m_AuthRstt[GUILDROLE_TYPE_SUBMASTER].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
#endif
|
||||
|
||||
// 선임길드원
|
||||
// 急烙辨靛盔
|
||||
m_AuthRstt[GUILDROLE_TYPE_SENIOR].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
|
||||
// 정식길드원
|
||||
// 沥侥辨靛盔
|
||||
m_AuthRstt[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
m_AuthRstt[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_NOTICE, 1);
|
||||
m_AuthRstt[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_INVITE, 1);
|
||||
m_AuthRstt[GUILDROLE_TYPE_REGULAR].Set(GUILDAUTH_TYPE_BATTLE, 1);
|
||||
|
||||
// 신입길드원
|
||||
// 脚涝辨靛盔
|
||||
m_AuthRstt[GUILDROLE_TYPE_JUNIOR].Set(GUILDAUTH_TYPE_EXILE, 1);
|
||||
m_AuthRstt[GUILDROLE_TYPE_JUNIOR].Set(GUILDAUTH_TYPE_NOTICE, 1);
|
||||
m_AuthRstt[GUILDROLE_TYPE_JUNIOR].Set(GUILDAUTH_TYPE_INVITE, 1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue