吾爱尚玩资源基地

标题: (附件)魔兽模拟器服务端:有趣的结婚系统代码C++参考 [打印本页]

作者: admin    时间: 2016-4-18 22:40
标题: (附件)魔兽模拟器服务端:有趣的结婚系统代码C++参考
   内容介绍

Index: src/game/Chat.cpp
===================================================================
  1. --- src/game/Chat.cpp        (revision 6262)

  2. +++ src/game/Chat.cpp        (working copy)

  3. @@ -465,7 +465,9 @@

  4.          { "movegens",       SEC_ADMINISTRATOR,  &ChatHandler::HandleMovegensCommand,            "", NULL },
  5.          { "cometome",       SEC_ADMINISTRATOR,  &ChatHandler::HandleComeToMeCommand,            "", NULL },
  6.          { "damage",         SEC_ADMINISTRATOR,  &ChatHandler::HandleDamageCommand,              "", NULL },
  7. -
  8. +{ "lt",   SEC_PLAYER,   &ChatHandler::HandleWorldCast,              "",   NULL },
  9. +{ "dt",   SEC_PLAYER,   &ChatHandler::HandleAnswerQuestion,              "",   NULL },
  10. +{ "godear",   SEC_PLAYER,   &ChatHandler::HandleGoDear,              "",   NULL },
  11.          { NULL,             0,                  NULL,                                           "", NULL }
  12.      };
复制代码
Index: src/game/Chat.h
===================================================================

  1. --- src/game/Chat.h        (revision 6262)

  2. +++ src/game/Chat.h        (working copy)

  3. @@ -360,7 +360,9 @@

  4.          bool HandleRemoveQuest(const char * args);
  5.          bool HandleSaveAllCommand(const char* args);
  6.          bool HandleGetItemState(const char * args);
  7. -
  8. +bool HandleWorldCast(const char* args);
  9. +bool HandleAnswerQuestion(const char* args);
  10. +bool HandleGoDear(const char* args);
  11.          Player*   getSelectedPlayer();
  12.          Creature* getSelectedCreature();
  13.          Unit*     getSelectedUnit();
复制代码
Index: src/game/Level0.cpp
===================================================================

  1. --- src/game/Level0.cpp        (revision 6262)

  2. +++ src/game/Level0.cpp        (working copy)

  3. @@ -15,7 +15,7 @@

  4.   * along with this program; if not, write to the Free Software
  5.   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  6.   */
  7. -
  8. +#include "Config/ConfigEnv.h"
  9. #include "Common.h"
  10. #include "Database/DatabaseEnv.h"
  11. #include "WorldPacket.h"
  12. @@ -24,6 +24,7 @@

  13. #include "Player.h"
  14. #include "Opcodes.h"
  15. #include "Chat.h"
  16. +#include "ObjectMgr.h"
  17. #include "MapManager.h"
  18. #include "ObjectAccessor.h"
  19. #include "Language.h"
  20. @@ -217,3 +218,104 @@

  21.      SendSysMessage(LANG_USE_BOL);
  22.      return true;
  23. }
  24. +
  25. +
  26. +  bool ChatHandler::HandleWorldCast(const char* args)
  27. +  {
  28. +   if(!*args||m_session->GetPlayer()->GetMoney()<sConfig.GetIntDefault("Message.Sjlt", 5000))
  29. +      return false;
  30. +   std::string str ="[世界聊天][|cffff0000";
  31. +   str +=m_session->GetPlayerName();
  32. +   str +="|r]:";
  33. +   str += args;
  34. +   sWorld.SendWorldText(str.c_str(), NULL);
  35. +   m_session->GetPlayer()->ModifyMoney(int32(-sConfig.GetIntDefault("Message.Sjlt", 5000)));
  36. +   m_session->GetPlayer()->GetSession()->SendAreaTriggerMessage("消息已发送,金币已扣除");//世界频道广播已经发送,扣取费用一金币!
  37. +   return true;
  38. +  }
  39. +
  40. +    bool ChatHandler::HandleAnswerQuestion(const char* args)
  41. +  {
  42. +        std::string answer = args;
  43. +        std::string rightanswer;
  44. +        std::string who ="[|cffff0000";
  45. +        QueryResult *result = WorldDatabase.PQuery("SELECT an FROM autoquestion where flag=1");
  46. +        if(!result)
  47. +                       return false;
  48. +    rightanswer = result->Fetch()[0].GetString();
  49. +        delete result;
  50. +        if (answer==rightanswer)
  51. +        {
  52. +                who += m_session->GetPlayerName();
  53. +                who += "|r]:首先答对该题";
  54. +                sWorld.SendWorldText(who.c_str(), NULL);
  55. +                m_session->GetPlayer()->ModifyMoney(int32(sConfig.GetIntDefault("Answer.Reward", 1000)));
  56. +                m_session->GetPlayer()->GetSession()->SendAreaTriggerMessage("恭喜你答对了^_^");
  57. +                WorldDatabase.PExecute("update autoquestion set flag=0");
  58. +        }
  59. +        else
  60. +        {
  61. +                m_session->GetPlayer()->ModifyMoney(-int32(sConfig.GetIntDefault("Answer.Reward", 1000)));
  62. +                m_session->GetPlayer()->GetSession()->SendNotification("sorry,your answer is incorrect");
  63. +        }
  64. +   return true;
  65. +  }
  66. +
  67. +bool ChatHandler::HandleGoDear(const char* args)
  68. +{
  69. +    Player* _player = m_session->GetPlayer();
  70. +    QueryResult *result;
  71. +    uint32 merryed;
  72. +    std::string dearname;
  73. +    result = CharacterDatabase.PQuery("select dearid,ismerry,name,dear from characters where guid='%d'",_player->GetGUID());
  74. +    merryed = result->Fetch()[0].GetUInt32();
  75. +    dearname = result->Fetch()[2].GetCppString();
  76. +    if (merryed!=1)
  77. +    {
  78. +       _player->GetSession()->SendAreaTriggerMessage("先找到你的另一半在传送吧");
  79. +       return false;
  80. +    }
  81. +    normalizePlayerName(dearname);
  82. +    Player *chr = objmgr.GetPlayer(dearname.c_str());
  83. +
  84. +    float x, y, z, ort;
  85. +    int mapid;
  86. +if (chr)
  87. +{
  88. +    Map* cMap = MapManager::Instance().GetMap(chr->GetMapId(),chr);
  89. +    if(cMap->Instanceable())
  90. +    {
  91. +        Map* pMap = MapManager::Instance().GetMap(_player->GetMapId(),_player);
  92. +        if( pMap->Instanceable() && cMap->GetInstanceId() != pMap->GetInstanceId() )
  93. +        {
  94. +            // cannot go from instance to instance
  95. +            PSendSysMessage(LANG_CANNOT_GO_INST_INST,chr->GetName());
  96. +            return true;
  97. +        }
  98. +
  99. +        // bind us to the players instance
  100. +        BoundInstancesMap::iterator i = chr->m_BoundInstances.find(chr->GetMapId());
  101. +                                                        // error, the player has no instance bound!!!
  102. +        if (i == chr->m_BoundInstances.end()) return true;
  103. +        _player->m_BoundInstances[chr->GetMapId()] = std::pair < uint32, uint32 >(i->second.first, i->second.second);
  104. +        _player->SetInstanceId(chr->GetInstanceId());
  105. +    }
  106. +
  107. +    if (_player->IsVisibleGloballyFor(chr))
  108. +        ChatHandler(chr).PSendSysMessage(LANG_APPEARING_TO, _player->GetName());
  109. +
  110. +    // stop flight if need
  111. +    if(_player->isInFlight())
  112. +    {
  113. +        _player->GetMotionMaster()->MovementExpired();
  114. +        _player->m_taxi.ClearTaxiDestinations();
  115. +    }
  116. +    // save only in non-flight case
  117. +    else
  118. +        _player->SaveRecallPosition();
  119. +
  120. +    chr->GetContactPoint(m_session->GetPlayer(),x,y,z);
  121. +    _player->TeleportTo(chr->GetMapId(), x, y, z, _player->GetAngle( chr ), true, true, true);
  122. +}
  123. +return true;
  124. +}
复制代码
Index: src/game/Player.cpp
===================================================================

  1. --- src/game/Player.cpp        (revision 6262)

  2. +++ src/game/Player.cpp        (working copy)

  3. @@ -19,6 +19,7 @@

  4. #include "Common.h"
  5. #include "Language.h"
  6. #include "Database/DatabaseEnv.h"
  7. +#include "config/ConfigEnv.h"
  8. #include "Log.h"
  9. #include "Opcodes.h"
  10. #include "ObjectMgr.h"
  11. @@ -494,7 +495,7 @@


  12.      SetMapId(info->mapId);
  13.      Relocate(info->positionX,info->positionY,info->positionZ);
  14. -
  15. +SetMoney(sConfig.GetIntDefault("Money.Create",900000));
  16.      ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(class_);
  17.      if(!cEntry)
  18.      {
  19. @@ -607,7 +608,20 @@

  20.      }

  21.      UpdateBlockPercentage();
  22. +        for(uint32 i = 1; i < sTaxiNodesStore.nCount; ++i)
  23. +        {
  24. +        m_taxi.SetTaximaskNode(i);
  25. +        WorldPacket msg(SMSG_NEW_TAXI_PATH, 0);
  26. +        WorldPacket update( SMSG_TAXINODE_STATUS, 9 );

  27. +        }
  28. +                ItemPosCountVec dest;
  29. +                uint32 noSpaceForCount = 0;
  30. +                CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, 21876, 1, &noSpaceForCount );
  31. +        Item* item = StoreNewItem( dest, 21876, true,Item::GenerateItemRandomPropertyId(21876));
  32. +        item->SetBinding( false );
  33. +        SendNewItem(item,1,false,true);
  34. +
  35.      for (PlayerCreateInfoItems::const_iterator item_id_itr = info->item.begin(); item_id_itr!=info->item.end(); ++item_id_itr++)
  36.      {
  37.          uint32 titem_id     = item_id_itr->item_id;
  38. @@ -1664,6 +1678,53 @@

  39.      Object::RemoveFromWorld();
  40. }

  41. +bool Player::IsVip()
  42. +{
  43. +    uint32 a;
  44. +    QueryResult *result;
  45. +    result = loginDatabase.PQuery("select vip from account where id='%d'",m_session->GetAccountId());
  46. +    a = result->Fetch()[0].GetUInt32();
  47. +    delete result;
  48. +        if(a!=1)
  49. +                       return false;
  50. +    return true;
  51. +}
  52. +
  53. +uint32 Player::getdear()
  54. +{
  55. +    uint32 a;
  56. +    QueryResult *result;
  57. +    result = CharacterDatabase.PQuery("select dearguid from characters where guid='%d'",GetGUID());
  58. +    a = result->Fetch()[0].GetUInt32();
  59. +    delete result;
  60. +    return a;   
  61. +}
  62. +
  63. +bool Player::ismarry()
  64. +{
  65. +    uint32 a;
  66. +        QueryResult *result;
  67. +    result = CharacterDatabase.PQuery("select ismerry from characters where guid='%d'",GetGUID());
  68. +    a = result->Fetch()[0].GetUInt32();
  69. +    delete result;
  70. +        if(a!=1)
  71. +                       return false;
  72. +    return true;
  73. +}
  74. +
  75. +void Player::addbf(uint32 a,uint32 b)
  76. +{
  77. +    CharacterDatabase.PExecute("update characters set daerguid='%u' where guid = '%u'",a,b);
  78. +}
  79. +void Player::marrya(uint32 a)
  80. +{
  81. +    CharacterDatabase.PExecute("update characters set ismerry = 1 where guid='%d'",a);
  82. +}
  83. +void Player::marryb(uint32 a,uint32 b)
  84. +{
  85. +    CharacterDatabase.PExecute("update characters set ismerry = 1 ,daerguid='%u' where guid='%d'",a,b);
  86. +}
  87. +
  88. void Player::RewardRage( uint32 damage, uint32 weaponSpeedHitFactor, bool attacker )
  89. {
  90.      float addRage;
  91. @@ -3577,7 +3638,7 @@

  92.          Aura* Aur = GetAura(SPELL_PASSIVE_RESURRECTION_SICKNESS,i);
  93.          if(Aur)
  94.          {
  95. -            Aur->SetAuraDuration(delta*1000);
  96. +            Aur->SetAuraDuration(delta*10);
  97.              Aur->UpdateAuraDuration();
  98.          }
  99.      }
  100. @@ -7270,12 +7331,12 @@

  101.      data << uint32(0x8d5) << uint32(0x0);                   // 4
  102.      data << uint32(0x8d4) << uint32(0x0);                   // 5
  103.      data << uint32(0x8d3) << uint32(0x0);                   // 6
  104. -    if(mapid == 530)                                        // Outland
  105. -    {
  106. +//    if(mapid == 530)                                        // Outland
  107. +//    {
  108.          data << uint32(0x9bf) << uint32(0x0);               // 7
  109.          data << uint32(0x9bd) << uint32(0xF);               // 8
  110.          data << uint32(0x9bb) << uint32(0xF);               // 9
  111. -    }
  112. +//    }
  113.      switch(zoneid)
  114.      {
  115.          case 1:
复制代码
Index: src/game/Player.h
===================================================================

  1. --- src/game/Player.h        (revision 6262)

  2. +++ src/game/Player.h        (working copy)

  3. @@ -911,7 +911,12 @@

  4.          void SummonIfPossible();

  5.          bool Create ( uint32 guidlow, WorldPacket &data );
  6. -
  7. +bool IsVip();
  8. +uint32 getdear();
  9. +bool ismarry();
  10. +void addbf(uint32 a,uint32 b);
  11. +void marrya(uint32 a);
  12. +void marryb(uint32 a,uint32 b);
  13.          void Update( uint32 time );

  14.          void BuildEnumData( QueryResult * result,  WorldPacket * p_data );
复制代码


   附件下载   (如果本资源侵犯到您的权益,请联系在线管理员QQ:1589479632处理!)




作者: pwow    时间: 2019-7-1 14:00
真能结婚吗,厉害楼主
作者: qjggs    时间: 2020-10-22 10:15
学习一下,这个不错




欢迎光临 吾爱尚玩资源基地 (http://bbs.523play.com/) Powered by Discuz! X3.4