• 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);
     
            }
     
    }
  • 相关阅读:
    springmvc中@PathVariable和@RequestParam的区别
    Spring MVC 学习总结(一)——MVC概要与环境配置
    web中session与序列化的问题
    EL表达式
    JSTL自定义标签
    [c++][语言语法]stringstream iostream ifstream
    [C++][语言语法]标准C++中的string类的用法总结
    [数据库]数据库查询语句
    [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
    机器学习算法汇总
  • 原文地址:https://www.cnblogs.com/needly/p/3764343.html
Copyright © 2020-2023  润新知