⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 munpamanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -