关灯
开启左侧

模拟器头衔等级差距掉落系统代码

  [复制链接]
admin实名认证 发表于 2016-4-18 22:37:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
Index: Player.cpp===================================================================
--- Player.cpp        (revision 431)
+++ Player.cpp        (working copy)
@@ -19584,6 +19584,23 @@
}
//--------------------------清理个人副本系统-------------------------//

+//----------------头衔等级差距掉落系统----------------------//
+uint32 Player::GetTitleNumber()//头衔等级差距掉落系统
+{
+   uint32 titles = GetUInt32Value(PLAYER_CHOSEN_TITLE);
+   uint32 titles_value;
+   if (titles == 0)
+       titles_value = 0;
+   else if (titles < 15)
+       titles_value = titles;
+   else if (titles < 29)
+       titles_value = titles - 14;
+   else
+       titles_value = 0;
+   return titles_value;
+}
+//----------------头衔等级差距掉落系统----------------------//
+
void Player::AutoUnequipOffhandIfNeed()
{
     Item *offItem = GetItemByPos( INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND );
Index: Player.h
===================================================================
--- Player.h        (revision 431)
+++ Player.h        (working copy)
@@ -1118,6 +1118,8 @@
                void PSendWorldCnCenterMessage(int32 entry, ...);//全世界信息,屏幕中间entry对应mangos_string //PvP 杀人系统
//--------------------------清理个人副本系统-------------------------//
                void CleanSiglePlayerIntance(Player* player);//清理个人副本系统
+//----------------头衔等级差距掉落系统----------------------//
+                uint32 GetTitleNumber();//头衔等级差距掉落系统
//-----------------------------个性化结束-------------------------
                void GiveXP(uint32 xp, Unit* victim);
         void GiveLevel(uint32 level);
Index: Unit.cpp
===================================================================
--- Unit.cpp        (revision 431)
+++ Unit.cpp        (working copy)
@@ -598,7 +598,27 @@
                                                           uint32 killeritemid = objmgr.PlayerLootKillerItemid(entry);
                                                           if (itemID==0)
                                                                   break;
-                               ItemPosCountVec dest;
+
+                                                           if (sConfig.GetIntDefault("PvP.Title.On.Off", 0) == 1 && NEWPASSSYSTEM==sConfig.GetIntDefault("NewPassSystem", 0))//头衔掉落开始
+                                                           {
+                                                                   uint32 playertitle = player->GetTitleNumber();
+                                                               uint32 pVictimtitle = ((Player*)pVictim)->GetTitleNumber();
+                                                               int32 titlediff1 = playertitle - pVictimtitle;
+                                                                   int32 titlediff2 = pVictimtitle - playertitle;
+                                                               if ( titlediff1 > sConfig.GetIntDefault("PlayerLoot.Title.Diff", 2) || titlediff2 > sConfig.GetIntDefault("PlayerLoot.Title.Diff", 2) )
+                                                                   {
+                                                                           player->PSendSysCnMessage(15031,titlediff1);//屏幕左下角信息
+                                                                           ((Player*)pVictim)->PSendSysCnMessage(15031,titlediff1);//屏幕左下角信息
+                                                                       break;
+                                                                   }
+                                                                   else if (titlediff1 < 0)
+                                                                   {
+                                                                           uint32 itemCountAdd = titlediff2 * sConfig.GetIntDefault("PlayerLoot.Title.Additem", 2);
+                                                                           itemCount += itemCountAdd;
+                                                                   }
+                                                           }////头衔掉落结束
+
+                                                           ItemPosCountVec dest;
                                                       //player->GetSession()->SendAreaTriggerMessage("item id is %u,count is %u, chance is %u ",itemID,itemCount,chance);
                                uint8 msg = player->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, itemID, itemCount);
                                if( msg != EQUIP_ERR_OK )
@@ -608,7 +628,7 @@
                                }
                                                       else
                                               {
-                                                              if (((Player*)pVictim)->HasItemCount(itemID, 1))
+                                                              if (((Player*)pVictim)->HasItemCount(itemID, itemCount))
                                                              {
                                       Item* item_1 = player->StoreNewItem( dest, itemID, true, Item::GenerateItemRandomPropertyId(itemID));
                                                                          //if (chance ==0)break;

标签:模拟器
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • 荣誉管理

    曾经为论坛做出突出贡献目前已离职的版主
  • 论坛元老

    为论坛做出突出贡献的会员

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

吾爱尚玩资源基地永久域名:

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

Copyright   ©2015-2116  吾爱尚玩资源基地|523play.comPowered by©523Pplay.Com技术支持:吾爱尚玩资源基地