📄 partymanager.cpp
字号:
smsg.Protocol = MP_PARTY_CHANGEMASTER_ACK;
smsg.dwData = TargetID;
pParty->SendMsgToAll(&smsg,sizeof(smsg));
}
void CPartyManager::BreakupParty(DWORD PartyID,DWORD PlayerID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(pPlayer == NULL)
return;
if(pPlayer->GetPartyIdx() == 0)
{
ASSERTMSG(pPlayer->GetPartyIdx(), "颇萍啊 绝绰 荤恩捞 秦魂窍妨 沁嚼聪促");
return;
}
CParty* pParty = GetParty(pPlayer->GetPartyIdx());
if(pParty == NULL)
{
ASSERTMSG(0,"颇萍啊 粮犁窍瘤 臼嚼聪促.");//pjslocal
return;
}
if(pParty->IsMasterChanging(pPlayer, MP_PARTY_BREAKUP_NACK) == TRUE)
return;
MSGBASE send_msg;
send_msg.Category = MP_PARTY;
send_msg.Protocol = MP_PARTY_BREAKUP_ACK;
send_msg.dwObjectID = pPlayer->GetID();
pParty->SendMsgToAll(&send_msg,sizeof(send_msg));
PartyBreakup(pPlayer->GetPartyIdx()); // DB
NotifyChangesOtherMapServer(PlayerID,pParty,MP_PARTY_NOTIFYBREAKUP_TO_MAPSERVER, PartyID);
pParty->BreakUp();
m_partyRoomHashTable.Remove(PartyID);
delete pParty;
}
void CPartyManager::NotifyBreakupParty(SEND_CHANGE_PARTY_MEMBER_INFO* pmsg)
{
CParty* pParty = GetParty(pmsg->PartyID);
if(pParty == NULL)
return;
MSGBASE send_msg;
send_msg.Category = MP_PARTY;
send_msg.Protocol = MP_PARTY_BREAKUP_ACK;
pParty->SendMsgToAll(&send_msg,sizeof(send_msg));
pParty->BreakUp();
m_partyRoomHashTable.Remove(pmsg->PartyID);
delete pParty;
}
void CPartyManager::CreatePartyResult(CPlayer * pMaster, DWORD PartyIDX, BYTE Option)
{
CParty* pParty = new CParty(PartyIDX,pMaster->GetID(),pMaster->GetObjectName(),pMaster,Option);
if(m_partyRoomHashTable.GetData(PartyIDX))
{
ASSERTMSG(0, "颇萍牢郸胶啊 捞固 乐嚼聪促.");
return;
}
m_partyRoomHashTable.Add(pParty,PartyIDX);
pMaster->SetPartyIdx(PartyIDX);
MSG_DWORDBYTE send_msg;
send_msg.Category = MP_PARTY;
send_msg.Protocol = MP_PARTY_CREATE_ACK;
send_msg.dwObjectID = pMaster->GetID();
send_msg.dwData = PartyIDX;
send_msg.bData = Option;
pMaster->SendMsg(&send_msg,sizeof(send_msg));
pParty->SetMaster(pMaster);
// UserLogIn(pMaster);
//Broadcasting
MSG_DWORD msg;
msg.Category = MP_PARTY;
msg.Protocol = MP_PARTY_NOTIFYCREATE_TO_MAPSERVER;
msg.dwObjectID = pMaster->GetID();
msg.dwData = PartyIDX;
g_Network.Send2AgentServer((char*)&msg, sizeof(msg));
// g_Network.Broadcast2AgentServer((char*)&msg,sizeof(msg));
}
void CPartyManager::NotifyCreateParty(DWORD PartyIDX)
{
CParty* pParty = new CParty(PartyIDX, 0, "", NULL,0);
if(m_partyRoomHashTable.GetData(PartyIDX))
{
ASSERTMSG(0, "notify : 颇萍牢郸胶啊 捞固 乐嚼聪促.");
return;
}
m_partyRoomHashTable.Add(pParty,PartyIDX);
}
CParty* CPartyManager::GetParty(DWORD partyIDx)
{
CParty* pParty = (CParty*)m_partyRoomHashTable.GetData(partyIDx);
return pParty;
}
void CPartyManager::UserLogIn(CPlayer* pPlayer,BOOL bNotifyUserLogin)
{
DWORD PartyID = pPlayer->GetPartyIdx();
if(PartyID == 0)
return;
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
{
char buf[128];
sprintf(buf,"颇萍 牢郸胶啊 甘辑滚俊 绝澜. PartyIDX: %u, CharacterIdx: %u, MapNum : %d 绢叼啊 波脸菌唱?", PartyID, pPlayer->GetID(), GAMERESRCMNGR->GetLoadMapNum());
ASSERTMSG(0,buf);
PartyInfoByUserLogin(PartyID,pPlayer->GetID());
return;
}
if(pParty->GetMasterID() != 0) //颇萍 沥焊啊 乐栏搁
//颇萍盔俊霸 磊扁 沥焊甫 焊郴绊 颇萍 沥焊甫 罐绰促.
pParty->UserLogIn(pPlayer,bNotifyUserLogin);
else
{ // 颇萍 沥焊啊 绝栏搁, DB俊 秦寸窍绰 颇萍狼 技何 沥焊 夸没
PartyInfoByUserLogin(PartyID,pPlayer->GetID());
}
if(!pPlayer->GetMapChangePoint()) //肺弊牢捞搁 颇萍盔甸俊霸 皋矫瘤
{
pParty->SendMemberLogInMsg(pPlayer->GetID());
pParty->NotifyMemberLogin(pPlayer->GetID());
}
// NotifyChangesOtherMapServer(pPlayer->GetID(),pParty,MP_PARTY_NOTIFYMEMBER_LOGIN_TO_MAPSERVER, PartyID);
}
void CPartyManager::NotifyUserLogIn(SEND_CHANGE_PARTY_MEMBER_INFO* pmsg)
{
CParty* pParty = GetParty(pmsg->PartyID);
if(pParty ==NULL)
return;
if(pParty->m_Member[0].MemberID == 0) //捞 甘辑滚俊 颇萍 技何 沥焊啊 绝栏搁
return;
pParty->NotifyUserLogIn(pmsg);
}
void CPartyManager::UserLogOut(CPlayer* pPlayer)
{
DWORD PartyID = pPlayer->GetPartyIdx();
if(PartyID == 0)
return;
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
{
char buf[128];
sprintf(buf, "颇萍啊 粮犁窍瘤 臼嚼聪促. PartyIdx: %d", PartyID);
ASSERTMSG(0,buf);
return;
}
pParty->UserLogOut(pPlayer->GetID());
pParty->SendMsgUserLogOut(pPlayer->GetID());
NotifyChangesOtherMapServer(pPlayer->GetID(),pParty,MP_PARTY_NOTIFYMEMBER_LOGOUT_TO_MAPSERVER, PartyID);
}
void CPartyManager::NotifyUserLogOut(SEND_CHANGE_PARTY_MEMBER_INFO* pmsg)
{
CParty* pParty = GetParty(pmsg->PartyID);
if(pParty == NULL)
return;
if(pParty->GetMasterID() == 0) //颇萍 沥焊啊 绝栏搁
return;
pParty->UserLogOut(pmsg->dwObjectID);
pParty->SendMsgUserLogOut(pmsg->dwObjectID);
}
void CPartyManager::UserLogInAfterDBQuery(DWORD CharacterID,DWORD PartyIdx,PARTYMEMBER* PartyInfo, BYTE Option)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(CharacterID);
if(pPlayer == NULL)
return;
CParty* pParty;
pParty = GetParty(PartyIdx);
if(!pParty)
{
pParty = RegistParty(PartyIdx);
}
pParty->SetOption(Option);
for(int i=0; i<MAX_PARTY_LISTNUM; ++i)
{
pParty->m_Member[i].bLogged = PartyInfo[i].bLogged;
pParty->m_Member[i].MemberID = PartyInfo[i].MemberID;
SafeStrCpy(pParty->m_Member[i].Name, PartyInfo[i].Name, MAX_NAME_LENGTH+1);
pParty->m_Member[i].Level = PartyInfo[i].Level;
}
pParty->UserLogIn(pPlayer,TRUE);
}
void CPartyManager::DelMemberSyn(DWORD PlayerID, DWORD PartyID)
{
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
{
ASSERT(0);
return;
}
PartyDelMember(PartyID, PlayerID);
/* DWORD FirstOnlineMemberID = pParty->GetFirstOnlineMemberID();
if(FirstOnlineMemberID == NULL)
ASSERTMSG(0,"柯扼牢 糕滚啊(磊脚器窃) 茄疙档 绝嚼聪促.");
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(FirstOnlineMemberID);
if(pPlayer)
DelMember(PlayerID,PartyID);
else
{
MSG_DWORD2 msg;
msg.Category = MP_PARTY;
msg.Protocol = MP_PARTY_SYNDELETE_TO_MAPSERVER;
msg.dwObjectID = FirstOnlineMemberID;
msg.dwData1 = PlayerID;
msg.dwData2 = PartyID;
g_Network.Broadcast2AgentServer((char*)&msg,sizeof(msg));
}
*/
}
void CPartyManager::NotifyDelSyn(MSG_DWORD2* pmsg)
{
DelMember(pmsg->dwData1,pmsg->dwData2);
}
void CPartyManager::NotifyChangesOtherMapServer(DWORD TargetPlayerID,CParty* pParty, BYTE Protocol, DWORD PartyIDX, LEVELTYPE Level)
{
SEND_CHANGE_PARTY_MEMBER_INFO msg;
msg.Category = MP_PARTY;
msg.Protocol = Protocol;
msg.dwObjectID = TargetPlayerID;
msg.PartyID = PartyIDX;
SafeStrCpy(msg.Name,pParty->GetMemberName(TargetPlayerID), MAX_NAME_LENGTH+1);
msg.Level = Level;
//YH2DO no -_-+++++++
g_Network.Send2AgentServer((char*)&msg,sizeof(msg));
}
void CPartyManager::RemoveParty(DWORD DeletedPlayerID, DWORD PartyID)
{
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
return;
pParty->RemovePartyMember(DeletedPlayerID);
}
void CPartyManager::SendErrMsg(DWORD PlayerID, int ErrKind, BYTE Protocol)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(pPlayer == NULL)
return;
char buf[128];
sprintf(buf, "PartyErrNum: %d, CharacterIdx: %d", ErrKind, PlayerID);
ASSERTMSG(0, buf);
//敲饭捞绢俊霸 俊矾 皋矫瘤 焊晨.
MSG_BYTE msg;
msg.Category = MP_PARTY;
msg.Protocol = Protocol;
msg.bData = ErrKind;
pPlayer->SendMsg(&msg, sizeof(msg));
}
BOOL CPartyManager::SendPartyMsg(DWORD PartyID, MSGBASE* pmsg, int msglen)
{
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
return FALSE;
pParty->SendMsgToAll(pmsg,msglen);
return TRUE;
}
void CPartyManager::SetTacticObjectID(DWORD PartyID,DWORD TacticObjectID)
{
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
return;
pParty->SetTacticObjectID(TacticObjectID);
}
void CPartyManager::NotifyMemberLoginMsg(DWORD PartyID, DWORD PlayerID)
{
CParty* pParty = GetParty(PartyID);
if(pParty == NULL)
return;
pParty->SendMemberLogInMsg(PlayerID);
}
void CPartyManager::MemberLevelUp(DWORD PartyIDX, DWORD PlayerIDX, LEVELTYPE lvl)
{
DoMemberLevelUp(PartyIDX, PlayerIDX, lvl);
MSG_DWORD3 msg;
msg.Category = MP_PARTY;
msg.Protocol = MP_PARTY_NOTIFYMEMBER_LEVEL;
msg.dwData1 = PartyIDX;
msg.dwData2 = PlayerIDX;
msg.dwData3 = lvl;
g_Network.Send2AgentServer((char*)&msg,sizeof(msg));
}
void CPartyManager::DoMemberLevelUp(DWORD PartyIDX, DWORD PlayerIDX, LEVELTYPE lvl)
{
CParty* pParty = PARTYMGR->GetParty(PartyIDX);
if(pParty == NULL)
return;
if(pParty->GetMasterID() == 0) //颇萍 糕滚 沥焊啊 绝栏搁
return;
pParty->SetMemberLevel(PlayerIDX, lvl);
MSG_DWORD2 msg;
msg.Category = MP_PARTY;
msg.Protocol = MP_PARTY_MEMBERLEVEL;
msg.dwData1 = PlayerIDX;
msg.dwData2 = lvl;
pParty->SendMsgExceptOne(&msg, sizeof(msg), PlayerIDX);
}
void CPartyManager::SendObtainItemMsg(CPlayer* pPlayer, WORD ObtainIdx)
{
CParty* pParty = PARTYMGR->GetParty(pPlayer->GetPartyIdx());
if(pParty == NULL)
return;
MSG_DWORD_WORD msg;
msg.Category = MP_PARTY;
msg.Protocol = MP_PARTY_MONSTER_OBTAIN_NOTIFY;
msg.dwData = pPlayer->GetID();
msg.wData = ObtainIdx;
pParty->SendMsgExceptOneinChannel(&msg, sizeof(msg), pPlayer->GetID(), pPlayer->GetGridID());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -