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

📄 distributeway.cpp

📁 墨香最新私服
💻 CPP
字号:
// DistributeWay.cpp: implementation of the CDistributeWay class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DistributeWay.h"
#include "Party.h"
#include "ItemDrop.h"
#include "ItemManager.h"
#include "..\[CC]Header\GameResourceManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDistributeWay::CDistributeWay()
{

}

CDistributeWay::~CDistributeWay()
{

}

void CDistributeWay::SendToPersonalExp(CPlayer* pReceivePlayer, DWORD Exp)
{
	// 厚啦 眠啊 - RaMa 04.10.18
	Exp *= gExpRate;

	pReceivePlayer->AddPlayerExpPoint(Exp);
}

void CDistributeWay::SendToPersonalAbil(CPlayer* pReceivePlayer, DWORD MonsterLevel)
{
	if(pReceivePlayer->GetState() == eObjectState_Die)
		return;
	DWORD AbilityExp;
	AbilityExp = CalcObtainAbilityExp(pReceivePlayer->GetMaxLevel(),MonsterLevel);
//	AbilityExp = CalcObtainAbilityExp(pReceivePlayer->GetLevel(),MonsterLevel);
	if(AbilityExp)
	{
		// 漂扁摹 眠啊. - RaMa 04.10.18
		AbilityExp *= gAbilRate;

		pReceivePlayer->AddAbilityExp(AbilityExp);
	}
}

DWORD CDistributeWay::CalcObtainAbilityExp(LEVELTYPE KillerLevel,LEVELTYPE MonsterLevel)
{
	//嚼垫 漂扁摹 剧
	//*. 嚼垫 : [阁胶磐狼 饭骇] - [磊脚 饭骇蔼] + 5 (0捞窍搁 "0")
	//阁胶磐 饭骇捞 磊脚 饭骇焊促 9饭骇 捞惑捞搁 阁胶磐 饭骇阑 某腐磐 饭骇+9肺 拌魂
	if(MonsterLevel+5 < KillerLevel)
		return 0;
	if(KillerLevel + 9 <MonsterLevel)
		MonsterLevel = KillerLevel+ 9;
	return MonsterLevel - KillerLevel + 5;
}

void CDistributeWay::SendToPersonalMoney(CPlayer* pPlayer, MONEYTYPE Money, WORD MonsterKind)
{
	if( pPlayer->SetMoney(Money, MONEY_ADDITION, 1, eItemTable_Inventory, eMoneyLog_GetMonster, MonsterKind) != Money )
	{
		// error msg 焊辰促. 力茄樊 檬苞
		MSGBASE msg;
		msg.Category = MP_ITEM;
		msg.Protocol = MP_ITEM_MONEY_ERROR;
		msg.dwObjectID = pPlayer->GetID();
		
		pPlayer->SendMsg(&msg, sizeof(msg));
	}
}

void CDistributeWay::SendToPersonalItem(CPlayer* pPlayer, WORD DropItemId, DWORD DropItemRatio, MONSTEREX_LIST * pMonInfo, WORD MonsterKind)
{
	if(ChkGetItemLevel(pPlayer->GetLevel(), pMonInfo->Level) == FALSE)
		return;
	if(DropItemId == 0)
	{
		MONEYTYPE money = ITEMDROP_OBJ->MoneyItemNoItemPercentCalculator(pMonInfo, pPlayer, MonsterKind);
		SendToPersonalMoney(pPlayer, money, MonsterKind);
	}
	else
	{
		//罚待窃荐 --; 绢恫芭 结具窍瘤
		if( DropItemRatio )
		if( ( rand()%100 ) % ( 100 / DropItemRatio ) == 0 )
			ITEMMGR->MonsterObtainItem(pPlayer,DropItemId,MonsterKind);
	}
}

BOOL CDistributeWay::ChkGetItemLevel(LEVELTYPE PlayerLvl, LEVELTYPE MonsterLvl)
{
	if(PlayerLvl > MonsterLvl + 6)
		return FALSE;
	else
		return TRUE;
}

void CDistributeWay::CalcAbilandSend(LEVELTYPE MonsterLevel, PARTY_RECEIVE_MEMBER* pMemberInfo)
{
	DWORD tempoint = 0;
	DWORD AbilPoint = 0;
	LEVELTYPE playerlvl =0;
	float levelavg = 0;
	LEVELTYPE maxlevel = 0;  
	LEVELTYPE curlevel = 0;
	
	for(int i=0; i<pMemberInfo->count; ++i)
	{
		curlevel = ((CPlayer*)pMemberInfo->pPlayer[i])->GetMaxLevel();
		if(maxlevel < curlevel)
			maxlevel = curlevel;
		levelavg += curlevel;			
	}
	levelavg /= (float)pMemberInfo->count;

	for(i=0; i<pMemberInfo->count; ++i)
	{
		if(((CPlayer*)pMemberInfo->pPlayer[i]) == 0)
			return;
		playerlvl = ((CPlayer*)pMemberInfo->pPlayer[i])->GetMaxLevel();
		if(MonsterLevel+5 < playerlvl)
			continue;
		if(playerlvl + 9 < MonsterLevel)
			MonsterLevel = playerlvl+ 9;
		tempoint = MonsterLevel - playerlvl + 5;

		if(pMemberInfo->count != 1)
		{
			AbilPoint = tempoint * ( playerlvl * (10 + pMemberInfo->count) / 9.f / (float)levelavg )
				/ (float)pMemberInfo->count;
		}
		else
			AbilPoint = tempoint;
		if(tempoint == 0)
			AbilPoint = 1;
		// 漂扁摹 眠啊. - RaMa 04.10.18
		AbilPoint *= gAbilRate;
		
		((CPlayer*)pMemberInfo->pPlayer[i])->AddAbilityExp(AbilPoint);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -