📄 distributeway.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 + -