📄 munpamanager.cpp
字号:
MarkChange(pPlayer, 0, MUNPA_NOTMEMBER);
FAMEMGR->SetPlayerFame(pPlayer, Fame);
}
void CMunpaManager::DoBanMember(CPlayer* pTarget)
{
pTarget->SetMunpaIdx(0);
pTarget->SetMunpaMemberRank(MUNPA_NOTMEMBER);
pTarget->SetMunpaName("-");
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_BAN_TO_TARGET_ACK;
pTarget->SendMsg(&msg, sizeof(msg));
}
void CMunpaManager::NotifyAcceptMember(SEND_MUNPA_ACCEPT_TO_MAP* pInfo)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pInfo->dwObjectID);
if(!pPlayer)
return;
if(pPlayer->GetMunpaIdx() != pInfo->MunpaID)
{
ASSERT(0);
return;
}
DoAcceptMember(pPlayer, pInfo->MunpaID, pInfo->MunpaName);
MarkChange(pPlayer, pInfo->MunpaID, MUNPA_MEMBER);
}
void CMunpaManager::DoAcceptMember(CPlayer* pTarget, DWORD MunpaID, char* MunpaName)
{
pTarget->SetMunpaIdx(MunpaID);
pTarget->SetMunpaMemberRank(MUNPA_MEMBER);
pTarget->SetMunpaName(MunpaName);
SEND_MUNPA_ACCEPT_TO_MAP msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_ACCMEMBER_TO_TARGET_ACK;
msg.MunpaID = MunpaID;
SafeStrCpy(msg.MunpaName, MunpaName, MAX_MUNPA_NAME+1);
pTarget->SendMsg(&msg, sizeof(msg));
}
void CMunpaManager::NotifyDenyMember(MSGBASE* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
DoDenyMember(pPlayer);
}
void CMunpaManager::DoDenyMember(CPlayer* pTarget)
{
pTarget->SetMunpaIdx(0);
pTarget->SetMunpaMemberRank(MUNPA_NOTMEMBER);
pTarget->SetMunpaName("-");
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_DENYMEMBER_TO_TARGET_ACK;
pTarget->SendMsg(&msg, sizeof(msg));
}
void CMunpaManager::MarkChange(CPlayer* pPlayer, DWORD MunpaIDX, BYTE Rank)
{
MSG_DWORD3 msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_MARK_CHANGE;
msg.dwData1 = pPlayer->GetID();
msg.dwData2 = MunpaIDX;
msg.dwData3 = Rank;
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer, &msg, sizeof(msg));
}
void CMunpaManager::NotifyBreakupMunpa(DWORD PlayerID, DWORD MunpaIDX, FAMETYPE FameVal)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
if(pPlayer->GetMunpaIdx() != MunpaIDX) //皋矫瘤 罐扁 傈俊 呕硼沁阑荐档 乐栏聪 弊成 府畔.
return;
pPlayer->SetFame(FameVal);
FAMEMGR->SendFame(pPlayer, FameVal);
pPlayer->SetMunpaIdx(0);
pPlayer->SetMunpaMemberRank(0);
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_BREAKUP_ACK;
pPlayer->SendMsg(&msg, sizeof(msg));
}
void CMunpaManager::NotifyAcceptMemberOtherMapServer(DWORD TargetID, char* MunpaName, DWORD MunpaID)
{
SEND_MUNPA_ACCEPT_TO_MAP msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_NOTIFY_ADDMEMBER_TO_MAPSERVER;
msg.dwObjectID = TargetID;
msg.MunpaID = MunpaID;
SafeStrCpy(msg.MunpaName, MunpaName, MAX_MUNPA_NAME+1);
g_Network.Broadcast2AgentServer((char*)&msg,sizeof(msg));
}
void CMunpaManager::RegularMembersInfo(CPlayer* pPlayer, DWORD MunpaID, DWORD GotoPage)
{
/* DWORD PlayerMunpaID = pPlayer->GetMunpaIdx();
CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_REGULARMEMBERS_INFO_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
*/
MunpaRegularMembersInfo(pPlayer->GetID(), MunpaID, GotoPage);
}
void CMunpaManager::CreateBoard(SEND_MUNPA_BOARD_RANK_INFO* msg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(msg->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(msg->ID);
if(!pMunpa)
{
ASSERTMSG(0, "霸矫魄 积己- 绝绰 巩颇涝聪促");
return;
}
*/
MunpaCreateBoard(msg);
}
void CMunpaManager::DeleteBoard(SEND_MUNPACCEPT_INFO* msg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(msg->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(msg->MunpaID);
if(!pMunpa)
{
ASSERTMSG(0, "霸矫魄 昏力- 绝绰 巩颇涝聪促");
return;
}
*/
MunpaDeleteBoard(msg->MunpaID, msg->TargetID, msg->dwObjectID);
MSG_DWORD info;
info.Category = MP_MUNPA;
info.Protocol = MP_MUNPA_DELETEBOARD_ACK;
info.dwData = msg->bLast;
pPlayer->SendMsg(&info, sizeof(info));
}
void CMunpaManager::BoardRankInfo(DWORD MasterID, DWORD BoardID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(MasterID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
ASSERTMSG(0, "霸矫魄 - 巩颇 沥焊绰 秦寸 瘤开俊辑 函版且荐 乐嚼聪促.");
return;
}
*/
MunpaBoardRankInfo(MasterID, pPlayer->GetMunpaIdx(), BoardID);
}
void CMunpaManager::BoardModifyRank(SEND_MUNPA_BOARD_RANK_INFO* msg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(msg->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(pPlayer->GetMunpaIdx());
if(!pMunpa)
{
ASSERTMSG(0, "霸矫魄 荐沥- 绝绰 巩颇涝聪促");
return;
}
*/
MunpaBoardRankInfoUpdate(pPlayer->GetID(), pPlayer->GetMunpaIdx(), msg);
}
void CMunpaManager::BoardSubjectListSyn(MSG_DWORD3* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(pmsg->dwData3);
if(!pMunpa)
{
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_BOARD_SUBJECTLIST_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
BYTE rank;
if(pMunpa->IsMember(pPlayer))
rank = pPlayer->GetMunpaMemberRank();
else rank = MUNPA_NOTMEMBER;
*/
MunpaBoardSubjectList(pmsg->dwObjectID, pmsg->dwData1, pmsg->dwData2, 10);
}
void CMunpaManager::BoardWriteSyn(SEND_BOARD_CONTENT_INFO* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
MunpaBoardWrite(pmsg->dwObjectID, pmsg->BoardIDX, pmsg->Subject, pmsg->Content, pmsg->RootContentsID, pPlayer->GetMunpaMemberRank());
}
void CMunpaManager::BoardModifySyn(SEND_BOARD_CONTENT_INFO* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
MunpaBoardModify(pmsg->dwObjectID, pmsg->BoardIDX, pmsg->Subject, pmsg->Content, pmsg->RootContentsID);
}
void CMunpaManager::BoardContentsSyn(MSG_DWORD3* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
if(pmsg->dwData3 == 0)
MunpaBoardCurrentContent(pmsg->dwObjectID, pmsg->dwData1, pmsg->dwData2, pPlayer->GetMunpaMemberRank());
if(pmsg->dwData3 == 2)
MunpaBoardBackContent(pmsg->dwObjectID, pmsg->dwData1, pmsg->dwData2, pPlayer->GetMunpaMemberRank());
if(pmsg->dwData3 == 1)
MunpaBoardFrontContent(pmsg->dwObjectID, pmsg->dwData1, pmsg->dwData2, pPlayer->GetMunpaMemberRank());
}
void CMunpaManager::BoardDeleteContentsSyn(MSG_DWORD2* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
MunpaBoardDeleteContents(pmsg->dwObjectID,pmsg->dwData2, pPlayer->GetMunpaMemberRank());
}
void CMunpaManager::SearchMunpa(DWORD PlayerID, char* key, DWORD GotoPage)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
MunpaSearchMunpa((DWORD)PlayerID, (BYTE)GAMERESRCMNGR->GetLoadMapNum(), key, GotoPage);
}
//////////////////////////////////////////////////////////////////////////
//芒绊
void CMunpaManager::MunpaWarehouseInfo(CPlayer* pPlayer, DWORD MunpaID, BYTE TabNum)
{
if(pPlayer->GetMunpaIdx() != MunpaID)
{
//nack 皋矫瘤 焊晨
ASSERTMSG(0, "磊脚狼 巩颇啊 酒囱单 皋矫瘤 焊晨.");
return;
}
CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
ASSERT(0);
MSGBASE msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_MUNPA_WAREHOUSE_INFO_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
if( pPlayer->GetMunpaMemberRank() < GetWarehouseRank(TabNum))
{
MSGBASE msg;
msg.Category = MP_ITEM;
msg.Protocol = MP_ITEM_MUNPA_WAREHOUSE_INFO_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
pMunpa->EnterWareHouse(pPlayer, TabNum);
}
void CMunpaManager::LeaveWareHouse(DWORD PlayerID, DWORD MunpaID, BYTE TabNum)
{
CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
return;
pMunpa->LeaveWareHouse(PlayerID, TabNum);
}
void CMunpaManager::PutInMoney(CPlayer* pPlayer, DWORD Money)
{
if(pPlayer->GetMunpaMemberRank() < MUNPA_MEMBER)
{
ASSERT(0);
return;
}
CMunpa* pMunpa = GetMunpa(pPlayer->GetMunpaIdx());
if(!pMunpa)
{
return;
}
DWORD playermon = pPlayer->GetMoney();
DWORD munpamon = pMunpa->GetMoney();
MONEYTYPE maxmon = pMunpa->GetMaxPurseMoney();
if( playermon < Money )
{
Money = playermon;
}
if( munpamon + Money > maxmon)
{
Money = maxmon - munpamon;
}
if(Money == 0)
return;
// 角力 函拳樊 锭巩俊 距埃 荐沥 钦聪促. (LBS)
Money = pMunpa->SetMoney(Money, MONEY_ADDITION, 20);
pPlayer->SetMoney(Money, MONEY_SUBTRACTION, 0, eItemTable_Inventory, eMoneyLog_LoseMunpa, pMunpa->GetMunpaID());
// pPlayer->SetMoney(Money, MONEY_SUBTRACTION);
// pMunpa->SetMoney(Money, MONEY_ADDITION, 20);
MunpaMoneyPutInOut(pPlayer->GetID(), pPlayer->GetMunpaIdx(), Money, 1); //dbUpdate
InsertLogMoney( eMoneyLog_LoseMunpa, pPlayer->GetID(), pPlayer->GetMoney(), Money, pPlayer->GetMunpaIdx(), pMunpa->GetMoney());
LogItemMoney(pPlayer->GetID(), pPlayer->GetObjectName(), pMunpa->GetMunpaID(), "#Munpa",
eLog_ItemMoveInvenToMunpa, pPlayer->GetMoney(), pMunpa->GetMoney(),
Money, 0, 0, 0, 0, 0, pPlayer->GetPlayerExpPoint());
}
void CMunpaManager::PutOutMoney(CPlayer* pPlayer, DWORD Money)
{
CMunpa* pMunpa = GetMunpa(pPlayer->GetMunpaIdx());
MONEYTYPE maxmon = pPlayer->GetMaxPurseMoney(eItemTable_Inventory); //牢亥配府肺 捣 颗扁聪鳖.
if(!pMunpa->IsMaster(pPlayer))
{
ASSERT(0);
return;
}
if(Money > pMunpa->GetMoney())
{
Money = pMunpa->GetMoney();
}
if(Money + pPlayer->GetMoney() > maxmon)
{
Money = maxmon - pPlayer->GetMoney();
}
if(Money == 0)
return;
Money = pPlayer->SetMoney(Money, MONEY_ADDITION, 0, eItemTable_Inventory, eMoneyLog_GetMunpa, pMunpa->GetMunpaID());
pMunpa->SetMoney(Money, MONEY_SUBTRACTION);
MunpaMoneyPutInOut(pPlayer->GetID(), pPlayer->GetMunpaIdx(), Money, 0); //db
InsertLogMoney( eMoneyLog_GetMunpa, pPlayer->GetID(), pPlayer->GetMoney(), Money, pPlayer->GetMunpaIdx(), pMunpa->GetMoney());
LogItemMoney(pMunpa->GetMunpaID(), "#Munpa", pPlayer->GetID(), pPlayer->GetObjectName(),
eLog_ItemMoveMunpaToInven, pMunpa->GetMoney(), pPlayer->GetMoney(),
Money, 0, 0, 0, 0, 0, pPlayer->GetPlayerExpPoint());
}
void CMunpaManager::LoadWarehouseAuthority()
{
CMHFile file;
#ifdef _FILE_BIN_
file.Init("Resource/MunpaWareAuthority.bin", "rb");
#else
file.Init("Resource/MunpaWareAuthority.txt", "rt");
#endif
if(file.IsInited() == FALSE)
{
ASSERTMSG(0, "MunpaWareAuthority.txt甫 肺靛给沁嚼聪促.");
return;
}
memset(&m_WarehouseRank, 0, sizeof(BYTE)*MAX_MUNPA_WARE_TABNUM);
int count = 0;
while(1)
{
if(file.IsEOF() != FALSE)
break;
m_WarehouseRank[count] = file.GetByte();
count++;
}
ASSERT(count == MAX_MUNPA_WARE_TABNUM);
file.Release();
}
BYTE CMunpaManager::GetWarehouseRank(BYTE i)
{
return m_WarehouseRank[i];
}
BYTE CMunpaManager::GetWarehouseRank(DWORD MunpaIDX, POSTYPE absPos)
{
CMunpa* pMunpa = GetMunpa(MunpaIDX);
BYTE A = pMunpa->GetTabNum(absPos);
return m_WarehouseRank[A];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -