T端军衔系统c++源代码,转自飞狐魔兽

//自定义 -- 军衔

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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月11日 上午1:36
下一篇 2023年2月11日 上午1:49

相关推荐