📄 synworldshell.cpp
字号:
}
//////////////////////////////////////////////////////////////////////
bool CSyndicateWorld::DelMember(LPCTSTR szName)
{
CHECKF(szName);
for(int i = m_setMember.size()-1; i >= 0; i--) // delete, reverse traverse
{
if(strcmp(m_setMember[i].szName.c_str(), szName) == 0)
{
m_setMember.erase(m_setMember.begin() + i);
return true;
}
}
return false;
}
//////////////////////////////////////////////////////////////////////
enum {
RANK_LEADER = 100, //军团团长
RANK_SUBLEADER = 80, //分团长
RANK_TEAMLEADER = 60, //队长
RANK_NEWBIE = 20, //普通团员
RANK_RESERVED = 10, //预备团员
RANK_NONE = 0,
RANK_SUB = RANK_LEADER - RANK_SUBLEADER,
};
int CSyndicateWorld::GetSynRankShow(int nRank)
{
int nRankShow = nRank;
if (nRankShow > RANK_NEWBIE)
{
OBJID idFealty = GetInt(SYNDATA_FEALTY);
while (idFealty != ID_NONE)
{
CSyndicateWorld* pSyn = GameWorld()->QuerySynManager()->QuerySyndicate(idFealty);
if (!pSyn)
break;
nRankShow -= RANK_SUB;
idFealty = pSyn->GetInt(SYNDATA_FEALTY);
}
}
return nRankShow;
}
//////////////////////////////////////////////////////////////////////
/*
int CSyndicateWorld::AppendOnlineMember(class CMsgName& msg, int idx)
{
int nAmount = m_setMember.size();
int nCount = 0;
for(int i = idx; i < nAmount && nCount < MEMBERLIST_SIZE; i++)
{
bool bOnline = (UserList()->GetPlayer(m_setMember[i].szName.c_str()) != NULL);
if(bOnline)
{
char szMsg[256];
sprintf(szMsg, "%s %d %d", m_setMember[i].szName.c_str(), GetSynRankShow(m_setMember[i].nRank), bOnline);
// msg append
CHECKF(msg.AppendString(szMsg, i));
nCount++;
}
}
if (nCount < MEMBERLIST_SIZE)
{
}
return nCount;
}
//////////////////////////////////////////////////////////////////////
int CSyndicateWorld::AppendOnlineMemberForAllMember(class CMsgName& msg, int idx)
{
int nAmount = m_setMemberTmp.size();
int nCount = 0;
for(int i = idx; i < nAmount && nCount < MEMBERLIST_SIZE; i++)
{
bool bOnline = (UserList()->GetPlayer(m_setMember[i].szName.c_str()) != NULL);
if(bOnline)
{
char szMsg[256];
sprintf(szMsg, "%s %d %d", m_setMemberTmp[i].szName.c_str(), GetSynRankShow(m_setMemberTmp[i].nRank), bOnline);
// msg append
CHECKF(msg.AppendString(szMsg, i));
nCount++;
}
}
return nCount;
}
//////////////////////////////////////////////////////////////////////
int CSyndicateWorld::AppendOfflineMember(class CMsgName& msg, int idx, int nCount)
{
int nAmount = m_setMember.size();
for(int i = idx; i < nAmount && nCount < MEMBERLIST_SIZE; i++)
{
bool bOnline = (UserList()->GetPlayer(m_setMember[i].szName.c_str()) != NULL);
if(!bOnline)
{
char szMsg[256];
sprintf(szMsg, "%s %d %d", m_setMember[i].szName.c_str(), GetSynRankShow(m_setMember[i].nRank), bOnline);
// msg append
CHECKF(msg.AppendString(szMsg, i));
nCount++;
}
}
return nCount;
}
//////////////////////////////////////////////////////////////////////
int CSyndicateWorld::AppendOfflineMemberForAllMember(class CMsgName& msg, int idx, int nCount)
{
int nAmount = m_setMemberTmp.size();
for(int i = idx; i < nAmount && nCount < MEMBERLIST_SIZE; i++)
{
bool bOnline = (UserList()->GetPlayer(m_setMember[i].szName.c_str()) != NULL);
if(!bOnline)
{
char szMsg[256];
sprintf(szMsg, "%s %d %d", m_setMemberTmp[i].szName.c_str(), GetSynRankShow(m_setMemberTmp[i].nRank), bOnline);
// msg append
CHECKF(msg.AppendString(szMsg, i));
nCount++;
}
}
return nCount;
}
*/
//////////////////////////////////////////////////////////////////////
void CSyndicateWorld::SendMemberList(CPlayer* pUser, int idxLast) // idxLast is last member or -1 for first time query
{
if(idxLast < 0 )
return ;
CMsgName msg;
CHECK(msg.CreateHead(NAMEACT_MEMBERLIST, idxLast));
int nCount = 0;
AppendMember(msg, 0, idxLast, nCount); // 先从本帮派中添加
// 如果不够一页则从子帮派中添加
if (nCount < MEMBERLIST_SIZE)
{
int idx = GetMemberAmount();
idxLast -= GetMemberAmount();
// 分团
for(int i = 0; i < GameWorld()->QuerySynManager()->GetSynAmount(); i++)
{
CSyndicateWorld* pSyn = GameWorld()->QuerySynManager()->GetSynByIndex(i);
if(pSyn && pSyn->GetInt(SYNDATA_FEALTY) == this->GetID())
{
pSyn->AppendMember(msg, idx, idxLast, nCount);
if (nCount >= MEMBERLIST_SIZE)
break;
idx += pSyn->GetMemberAmount();
idxLast -= pSyn->GetMemberAmount();
// 分队
for(int i = 0; i < GameWorld()->QuerySynManager()->GetSynAmount(); i++)
{
CSyndicateWorld* pSynTeam = GameWorld()->QuerySynManager()->GetSynByIndex(i);
if(pSynTeam && pSynTeam->GetInt(SYNDATA_FEALTY) == pSyn->GetID())
{
pSynTeam->AppendMember(msg, idx, idxLast, nCount);
if (nCount >= MEMBERLIST_SIZE)
break;
idx += pSynTeam->GetMemberAmount();
idxLast -= pSynTeam->GetMemberAmount();
}
}
if (nCount >= MEMBERLIST_SIZE)
break;
}
}
}
pUser->SendMsg(&msg);
/*
m_setMemberTmp.clear();
m_setMemberTmp = m_setMember;
MEMBER_SET setMember;
// 分团---begin
for(int i = 0; i < GameWorld()->QuerySynManager()->GetSynAmount(); i++)
{
CSyndicateWorld* pSyn = GameWorld()->QuerySynManager()->GetSynByIndex(i);
if(pSyn && pSyn->GetInt(SYNDATA_FEALTY) == this->GetID())
{
setMember = pSyn->QueryMemberList();
if(setMember.size())
m_setMemberTmp.insert(m_setMemberTmp.end(), setMember.begin(), setMember.end());
//分队-----begin
for(int j= 0; j < GameWorld()->QuerySynManager()->GetSynAmount(); j++)
{
CSyndicateWorld* pSynTeam = GameWorld()->QuerySynManager()->GetSynByIndex(i);
if(pSynTeam && pSynTeam->GetInt(SYNDATA_FEALTY) == pSyn->GetID())
{
setMember = pSynTeam->QueryMemberList();
if(setMember.size())
m_setMemberTmp.insert(m_setMemberTmp.end(), setMember.begin(), setMember.end());
}
}
//分队-----end
}
}
// 分团---end
// msg head
CMsgName msg;
CHECK(msg.CreateHead(NAMEACT_MEMBERLIST, idxLast));
bool bOnline = true; //? -1 for first query
int nCount = 0;
if(idxLast != -1)
bOnline = (UserList()->GetPlayer(m_setMember[idxLast].szName.c_str()) != NULL);
int idx = idxLast + 1;
if(bOnline)
{
nCount = AppendOnlineMemberForAllMember(msg, idx);
if(nCount < MEMBERLIST_SIZE)
nCount = AppendOfflineMemberForAllMember(msg, 0, nCount);
}
else
{
nCount = AppendOfflineMemberForAllMember(msg, idx);
}
pUser->SendMsg(&msg);
*/
}
//////////////////////////////////////////////////////////////////////
void CSyndicateWorld::CombineMemberList(const MEMBER_SET& setMember)
{
if(setMember.size())
m_setMember.insert(m_setMember.end(), setMember.begin(), setMember.end());
}
//////////////////////////////////////////////////////////////////////
CSyndicateWorld* CSyndicateWorld::GetMasterSyn()
{
if (GetInt(SYNDATA_FEALTY) == ID_NONE)
return this;
CSyndicateWorld* pSyn= GameWorld()->QuerySynManager()->QuerySyndicate(GetInt(SYNDATA_FEALTY));
IF_NOT (pSyn)
return this;
return pSyn->GetMasterSyn();
}
//////////////////////////////////////////////////////////////////////
/*
void CSyndicateWorld::SendMemberListSpecifySyn(CPlayer *pUser, int idxLast)
{
if(idxLast < -1 || idxLast >= static_cast<int>(m_setMember.size()))
return ;
// msg head
CMsgName msg;
CHECK(msg.CreateHead(NAMEACT_MEMBERLIST, idxLast));
bool bOnline = true; //? -1 for first query
int nCount = 0;
if(idxLast != -1)
bOnline = (UserList()->GetPlayer(m_setMember[idxLast].szName.c_str()) != NULL);
int idx = idxLast + 1;
if(bOnline)
{
nCount = AppendOnlineMember(msg, idx);
if(nCount < MEMBERLIST_SIZE)
nCount = AppendOfflineMember(msg, 0, nCount);
}
else
{
nCount = AppendOfflineMember(msg, idx);
}
pUser->SendMsg(&msg);
}
*/
int CSyndicateWorld::AppendMember(class CMsgName& msg, int idx, int idxFirst, int& nCount)
{
int nAmount = GetMemberAmount();
for (int i=idxFirst; i<nAmount && nCount < MEMBERLIST_SIZE; i++)
{
bool bOnline = (UserList()->GetPlayer(m_setMember[i].szName.c_str()) != NULL);
char szMsg[256];
sprintf(szMsg, "%s %d %d", m_setMember[i].szName.c_str(), GetSynRankShow(m_setMember[i].nRank), bOnline);
CHECKF(msg.AppendString(szMsg, idx + i));
nCount++;
}
return nCount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -