//自定义 -- 军衔
void Player::ModjunxianPrice()
{
uint32 Honorpoints = GetCurrency(CURRENCY_TYPE_HONOR_POINTS);
uint32 Conquestpoints = GetCurrency(CURRENCY_TYPE_CONQUEST_POINTS);
uint8 currlevel = m_junxian_level;
currlevel++;
if (currlevel >= 1 && currlevel <= (uint8)sConfig->GetIntDefault("Max.JunXian.Level", 0))
{
Junxian& pPlayerPReqitem1Data = eJunxian[currlevel];
Junxian& pPlayerPReqitem2Data = eJunxian[currlevel];
Junxian& pPlayerPReqitem3Data = eJunxian[currlevel];
Junxian& pPlayerPReqitem4Data = eJunxian[currlevel];
Junxian& pPlayerPReqCount1Data = eJunxian[currlevel];
Junxian& pPlayerPReqCount2Data = eJunxian[currlevel];
Junxian& pPlayerPReqCount3Data = eJunxian[currlevel];
Junxian& pPlayerPReqCount4Data = eJunxian[currlevel];
Junxian& pPlayerPReqJFData = eJunxian[currlevel];
Junxian& pPlayerPReqMBData = eJunxian[currlevel];
Junxian& pPlayerPReqVIPData = eJunxian[currlevel];
uint32 PReqitem1 = pPlayerPReqitem1Data.Reqitem1;
uint32 PReqCount1 = pPlayerPReqCount1Data.ReqCount1;
uint32 Junitem1count = GetItemCount(PReqitem1);
uint32 PReqitem2 = pPlayerPReqitem2Data.Reqitem2;
uint32 PReqCount2 = pPlayerPReqCount2Data.ReqCount2;
uint32 Junitem2count = GetItemCount(PReqitem2);
uint32 PReqitem3 = pPlayerPReqitem3Data.Reqitem3;
uint32 PReqCount3 = pPlayerPReqCount3Data.ReqCount3;
uint32 Junitem3count = GetItemCount(PReqitem3);
uint32 PReqitem4 = pPlayerPReqitem4Data.Reqitem4;
uint32 PReqCount4 = pPlayerPReqCount4Data.ReqCount4;
uint32 Junitem4count = GetItemCount(PReqitem4);
uint32 PJF = pPlayerPReqJFData.ReqJF;
uint32 PMB = pPlayerPReqMBData.ReqMB;
uint32 PVIP = pPlayerPReqVIPData.ReqVIP;
uint32 JunJF = GetJf();
uint32 JunMB = GetMB();
uint32 JunVIP = GetVIP();
Junxian& pPlayerPhonorData = eJunxian[currlevel];
Junxian& pPlayerPconquestData = eJunxian[currlevel];
if (Honorpoints >= pPlayerPhonorData.honor *100 && Conquestpoints >= pPlayerPconquestData.conquest * 100 && Junitem1count >= PReqCount1 && Junitem2count >= PReqCount2 && Junitem3count >= PReqCount3 && Junitem4count >= PReqCount4 && JunJF >= PJF && JunMB >= PMB && JunVIP >= PVIP)
{
SetCurrency(CURRENCY_TYPE_HONOR_POINTS, Honorpoints - pPlayerPhonorData.honor * 100);
SetCurrency(CURRENCY_TYPE_CONQUEST_POINTS, Conquestpoints - pPlayerPconquestData.conquest * 100);
DestroyItemCount(PReqitem1,PReqCount1,true);
DestroyItemCount(PReqitem2,PReqCount2,true);
DestroyItemCount(PReqitem3,PReqCount3,true);
DestroyItemCount(PReqitem4,PReqCount4,true);
uint32 sjf = JunJF - PJF;
SetJf(sjf);
uint32 smb = JunMB - PMB;
SetMB(smb);
m_junxian_level = currlevel;
ModifyProperty(currlevel,false);
}
uint32 level = m_junxian_level;
Junxian& data= eJunxian[level+1];
if (Honorpoints < pPlayerPhonorData.honor)
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d点荣誉"),level,data.level,data.honor);
if (Conquestpoints < pPlayerPhonorData.conquest)
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d点征服点"),level,data.level,data.conquest);
if (Junitem1count < pPlayerPhonorData.ReqCount1 && PReqitem1 != 0)
{
if (ObjectMgr::GetItemPrototype(PReqitem1))
{
ItemPrototype const *pProto1 = ObjectMgr::GetItemPrototype(PReqitem1);
std::string itemname1;
itemname1 = pProto1->Name1;
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d个%s"),level,data.level,data.ReqCount1,itemname1.c_str());
}else ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000提升军衔需要未知物品请联系管 理 员"));
}
if (Junitem2count < pPlayerPhonorData.ReqCount2 && PReqitem2 != 0)
{
if (ObjectMgr::GetItemPrototype(PReqitem2))
{
ItemPrototype const *pProto2 = ObjectMgr::GetItemPrototype(PReqitem2);
std::string itemname2;
itemname2 = pProto2->Name1;
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d个"),level,data.level,data.ReqCount2,itemname2.c_str());
}else ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000提升军衔需要未知物品请联系管 理 员"));
}
if (Junitem3count < pPlayerPhonorData.ReqCount3 && PReqitem3 != 0)
{
if (ObjectMgr::GetItemPrototype(PReqitem3))
{
ItemPrototype const *pProto3 = ObjectMgr::GetItemPrototype(PReqitem3);
std::string itemname3;
itemname3 = pProto3->Name1;
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d个"),level,data.level,data.ReqCount3,itemname3.c_str());
}else ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000提升军衔需要未知物品请联系管 理 员"));
}
if (Junitem4count < pPlayerPhonorData.ReqCount4 && PReqitem4 != 0)
{
if (ObjectMgr::GetItemPrototype(PReqitem4))
{
ItemPrototype const *pProto4 = ObjectMgr::GetItemPrototype(PReqitem4);
std::string itemname4;
itemname4 = pProto4->Name1;
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d个"),level,data.level,data.ReqCount4,itemname4.c_str());
}else ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000提升军衔需要未知物品请联系管 理 员"));
}
if (JunJF < PJF)
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d积分"),level,data.level,data.ReqJF);
if (JunMB < PMB)
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要有%d魔币"),level,data.level,data.ReqMB);
if (JunVIP < PVIP)
ChatHandler(this).PSendSysMessage(_StringToUTF8("|CFFFF0000您当前军衔等级%d,要升级到%d级军衔你必需至少要是级%d会员"),level,data.level,data.ReqVIP);
}
}//
//自定义 -- 荣誉军衔
void Player::ModifyProperty(uint32 currlevel, bool playerloading)
{
Junxian& data= eJunxian[currlevel];
//设置名称
if (GetTeamId()==0)
{
if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(data.new_title_lm))
{
SetUInt32Value(PLAYER_CHOSEN_TITLE, data.new_title_lm);
}
}else
{
if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(data.new_title_bl))
{
SetUInt32Value(PLAYER_CHOSEN_TITLE, data.new_title_bl);
}
}
if (!playerloading)
{
InitTalentForLevel();
Junxian& data1 = eJunxian[currlevel-1];
uint32 itementry1 = data1.Rewitem;
if (ObjectMgr::GetItemPrototype(itementry1))
{
Item *pItem = Item::CreateItem(itementry1, 1, this);
_ApplyItemMods(pItem, 15, false);
}
//CharacterDatabase.PExecute("UPDATE junxian_level SET honorlevel = %u WHERE guid = '%u'",currlevel, GetGUIDLow());
if (data.talent > 0)
ChatHandler(this).PSendSysMessage(_StringToUTF8("恭喜您升级了!您当前军衔等级%d,+天赋%d"),currlevel, data.talent);
else ChatHandler(this).PSendSysMessage(_StringToUTF8("恭喜您升级了!您当前军衔等级%d"),currlevel);
}
//奖励物品属性
uint32 itementry = data.Rewitem;
if (ObjectMgr::GetItemPrototype(itementry))
{
Item *pItem = Item::CreateItem(itementry, 1, this);
_ApplyItemMods(pItem, 15, true);
}
}
原文链接: https://www.cnblogs.com/needly/p/3764343.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/133166
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!