当前位置:首页>>魔兽单机>>正文
魔兽模拟器服务端:有趣的结婚系统代码C++参考
2013-07-05 17:19:27 作者:网络 来源: 浏览次数:0
摘要:魔兽单机端:有趣的结婚系统代码C++参考
 Index: src/game/Chat.cpp
 
===================================================================
 
--- src/game/Chat.cpp (revision 6262)
 
+++ src/game/Chat.cpp (working copy)
 
@@ -465,7 +465,9 @@
 
         { "movegens",       SEC_ADMINISTRATOR,  &ChatHandler::HandleMovegensCommand,            "", NULL },
         { "cometome",       SEC_ADMINISTRATOR,  &ChatHandler::HandleComeToMeCommand,            "", NULL },
         { "damage",         SEC_ADMINISTRATOR,  &ChatHandler::HandleDamageCommand,              "", NULL },
-
+{ "lt",   SEC_PLAYER,   &ChatHandler::HandleWorldCast,              "",   NULL },
+{ "dt",   SEC_PLAYER,   &ChatHandler::HandleAnswerQuestion,              "",   NULL },
+{ "godear",   SEC_PLAYER,   &ChatHandler::HandleGoDear,              "",   NULL },
         { NULL,             0,                  NULL,                                           "", NULL }
     };
 
Index: src/game/Chat.h
 
===================================================================
 
--- src/game/Chat.h (revision 6262)
 
+++ src/game/Chat.h (working copy)
 
@@ -360,7 +360,9 @@
 
         bool HandleRemoveQuest(const char * args);
         bool HandleSaveAllCommand(const char* args);
         bool HandleGetItemState(const char * args);
-
+bool HandleWorldCast(const char* args);
+bool HandleAnswerQuestion(const char* args);
+bool HandleGoDear(const char* args);
         Player*   getSelectedPlayer();
         Creature* getSelectedCreature();
         Unit*     getSelectedUnit();
Index: src/game/Level0.cpp
 
===================================================================
 
--- src/game/Level0.cpp (revision 6262)
 
+++ src/game/Level0.cpp (working copy)
 
@@ -15,7 +15,7 @@
 
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
-
+#include "Config/ConfigEnv.h"
 #include "Common.h"
 #include "Database/DatabaseEnv.h"
 #include "WorldPacket.h"
@@ -24,6 +24,7 @@
 
 #include "Player.h"
 #include "Opcodes.h"
 #include "Chat.h"
+#include "ObjectMgr.h"
 #include "MapManager.h"
 #include "ObjectAccessor.h"
 #include "Language.h"
@@ -217,3 +218,104 @@
 
     SendSysMessage(LANG_USE_BOL);
     return true;
 }
+
+
+  bool ChatHandler::HandleWorldCast(const char* args)
+  {
+   if(!*args||m_session->GetPlayer()->GetMoney()<sConfig.GetIntDefault("Message.Sjlt", 5000))
+      return false;
+   std::string str ="[世界聊天][|cffff0000";
+   str +=m_session->GetPlayerName();
+   str +="|r]:";
+   str += args;
+   sWorld.SendWorldText(str.c_str(), NULL);
+   m_session->GetPlayer()->ModifyMoney(int32(-sConfig.GetIntDefault("Message.Sjlt", 5000)));
+   m_session->GetPlayer()->GetSession()->SendAreaTriggerMessage("消息已发送,金币已扣除");//世界频道广播已经发送,扣取费用一金币!
+   return true;
+  }
+
+    bool ChatHandler::HandleAnswerQuestion(const char* args)
+  {
+ std::string answer = args;
+ std::string rightanswer;
+ std::string who ="[|cffff0000";
+ QueryResult *result = WorldDatabase.PQuery("SELECT an FROM autoquestion where flag=1");
+ if(!result)
+       return false;
+    rightanswer = result->Fetch()[0].GetString();
+ delete result;
+ if (answer==rightanswer)
+ {
+ who += m_session->GetPlayerName();
+ who += "|r]:首先答对该题";
+ sWorld.SendWorldText(who.c_str(), NULL);
+ m_session->GetPlayer()->ModifyMoney(int32(sConfig.GetIntDefault("Answer.Reward", 1000)));
+ m_session->GetPlayer()->GetSession()->SendAreaTriggerMessage("恭喜你答对了^_^");
+ WorldDatabase.PExecute("update autoquestion set flag=0");
+ }
+ else
+ {
+ m_session->GetPlayer()->ModifyMoney(-int32(sConfig.GetIntDefault("Answer.Reward", 1000)));
+ m_session->GetPlayer()->GetSession()->SendNotification("sorry,your answer is incorrect");
+ }
+   return true;
+  }
+
+bool ChatHandler::HandleGoDear(const char* args)
+{
+    Player* _player = m_session->GetPlayer();
+    QueryResult *result;
+    uint32 merryed;
+    std::string dearname;
+    result = CharacterDatabase.PQuery("select dearid,ismerry,name,dear from characters where guid='%d'",_player->GetGUID());
+    merryed = result->Fetch()[0].GetUInt32();
+    dearname = result->Fetch()[2].GetCppString();
+    if (merryed!=1)
+    {
+       _player->GetSession()->SendAreaTriggerMessage("先找到你的另一半在传送吧");
+       return false;
+    }
+    normalizePlayerName(dearname);
+    Player *chr = objmgr.GetPlayer(dearname.c_str());
+
+    float x, y, z, ort;
+    int mapid;
+if (chr)
+{
+    Map* cMap = MapManager::Instance().GetMap(chr->GetMapId(),chr);
+    if(cMap->Instanceable())
+    {
+        Map* pMap = MapManager::Instance().GetMap(_player->GetMapId(),_player);
+        if( pMap->Instanceable() && cMap->GetInstanceId() != pMap->GetInstanceId() )
+        {
+            // cannot go from instance to instance
+            PSendSysMessage(LANG_CANNOT_GO_INST_INST,chr->GetName());
+            return true;
+        }
+
+        // bind us to the players instance
+        BoundInstancesMap::iterator i = chr->m_BoundInstances.find(chr->GetMapId());
+                                                        // error, the player has no instance bound!!!
+        if (i == chr->m_BoundInstances.end()) return true;
+        _player->m_BoundInstances[chr->GetMapId()] = std::pair < uint32, uint32 >(i->second.first, i->second.second);
+        _player->SetInstanceId(chr->GetInstanceId());
+    }
+
+    if (_player->IsVisibleGloballyFor(chr))
+        ChatHandler(chr).PSendSysMessage(LANG_APPEARING_TO, _player->GetName());
+
+    // stop flight if need
+    if(_player->isInFlight())
+    {
+        _player->GetMotionMaster()->MovementExpired();
+        _player->m_taxi.ClearTaxiDestinations();
+    }
+    // save only in non-flight case
+    else
+        _player->SaveRecallPosition();
+
+    chr->GetContactPoint(m_session->GetPlayer(),x,y,z);
+    _player->TeleportTo(chr->GetMapId(), x, y, z, _player->GetAngle( chr ), true, true, true);
+}
+return true;
+}
Index: src/game/Player.cpp
 
===================================================================
 
--- src/game/Player.cpp (revision 6262)
 
+++ src/game/Player.cpp (working copy)
 
@@ -19,6 +19,7 @@
 
 #include "Common.h"
 #include "Language.h"
 #include "Database/DatabaseEnv.h"
+#include "config/ConfigEnv.h"
 #include "Log.h"
 #include "Opcodes.h"
 #include "ObjectMgr.h"
@@ -494,7 +495,7 @@
 
 
     SetMapId(info->mapId);
     Relocate(info->positionX,info->positionY,info->positionZ);
-
+SetMoney(sConfig.GetIntDefault("Money.Create",900000));
     ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(class_);
     if(!cEntry)
     {
@@ -607,7 +608,20 @@
 
     }
 
     UpdateBlockPercentage();
+ for(uint32 i = 1; i < sTaxiNodesStore.nCount; ++i)
+ {
+ m_taxi.SetTaximaskNode(i);
+ WorldPacket msg(SMSG_NEW_TAXI_PATH, 0);
+        WorldPacket update( SMSG_TAXINODE_STATUS, 9 );
 
+ }
+ ItemPosCountVec dest;
+ uint32 noSpaceForCount = 0;
+ CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, 21876, 1, &noSpaceForCount );
+        Item* item = StoreNewItem( dest, 21876, true,Item::GenerateItemRandomPropertyId(21876));
+        item->SetBinding( false );
+        SendNewItem(item,1,false,true);
+
     for (PlayerCreateInfoItems::const_iterator item_id_itr = info->item.begin(); item_id_itr!=info->item.end(); ++item_id_itr++)
     {
         uint32 titem_id     = item_id_itr->item_id;
@@ -1664,6 +1678,53 @@
 
     Object::RemoveFromWorld();
 }
 
+bool Player::IsVip()
+{
+    uint32 a;
+    QueryResult *result;
+    result = loginDatabase.PQuery("select vip from account where id='%d'",m_session->GetAccountId());
+    a = result->Fetch()[0].GetUInt32();
+    delete result;
+ if(a!=1)
+       return false;
+    return true;
+}
+
+uint32 Player::getdear()
+{
+    uint32 a;
+    QueryResult *result;
+    result = CharacterDatabase.PQuery("select dearguid from characters where guid='%d'",GetGUID());
+    a = result->Fetch()[0].GetUInt32();
+    delete result;
+    return a;   
+}
+
+bool Player::ismarry()
+{
+    uint32 a;
+ QueryResult *result;
+    result = CharacterDatabase.PQuery("select ismerry from characters where guid='%d'",GetGUID());
+    a = result->Fetch()[0].GetUInt32();
+    delete result;
+ if(a!=1)
+       return false;
+    return true;
+}
+
+void Player::addbf(uint32 a,uint32 b)
+{
+    CharacterDatabase.PExecute("update characters set daerguid='%u' where guid = '%u'",a,b); 
+}
+void Player::marrya(uint32 a)
+{
+    CharacterDatabase.PExecute("update characters set ismerry = 1 where guid='%d'",a);
+}
+void Player::marryb(uint32 a,uint32 b)
+{
+    CharacterDatabase.PExecute("update characters set ismerry = 1 ,daerguid='%u' where guid='%d'",a,b); 
+}
+
 void Player::RewardRage( uint32 damage, uint32 weaponSpeedHitFactor, bool attacker )
 {
     float addRage;
@@ -3577,7 +3638,7 @@
 
         Aura* Aur = GetAura(SPELL_PASSIVE_RESURRECTION_SICKNESS,i);
         if(Aur)
         {
-            Aur->SetAuraDuration(delta*1000);
+            Aur->SetAuraDuration(delta*10);
             Aur->UpdateAuraDuration();
         }
     }
@@ -7270,12 +7331,12 @@
 
     data << uint32(0x8d5) << uint32(0x0);                   // 4
     data << uint32(0x8d4) << uint32(0x0);                   // 5
     data << uint32(0x8d3) << uint32(0x0);                   // 6
-    if(mapid == 530)                                        // Outland
-    {
+//    if(mapid == 530)                                        // Outland
+//    {
         data << uint32(0x9bf) << uint32(0x0);               // 7
         data << uint32(0x9bd) << uint32(0xF);               // 8
         data << uint32(0x9bb) << uint32(0xF);               // 9
-    }
+//    }
     switch(zoneid)
     {
         case 1:
Index: src/game/Player.h
 
===================================================================
 
--- src/game/Player.h (revision 6262)
 
+++ src/game/Player.h (working copy)
 
@@ -911,7 +911,12 @@
 
         void SummonIfPossible();
 
         bool Create ( uint32 guidlow, WorldPacket &data );
-
+bool IsVip();
+uint32 getdear();
+bool ismarry();
+void addbf(uint32 a,uint32 b);
+void marrya(uint32 a);
+void marryb(uint32 a,uint32 b);
         void Update( uint32 time );
 
         void BuildEnumData( QueryResult * result,  WorldPacket * p_data );
 
下载:20130324123318650.rar


相关报道:

[关闭] [返回顶部]


  返回首页 | 最新资讯 | 资源下载 | 魔兽图片 | 单机文档 | 技术攻略 | 玩家视频
备案号:蜀ICP备2024062380号-1
免责声明:本网站为热爱怀旧WOW的玩家们建立的魔兽世界资料网站,仅供交流和学习使用,非盈利和商用.如有侵权之处,请联系我们,我们会在24小时内确认删除侵权内容,谢谢合作。
Copyright © 2024 - 2024 WOWAII.COM Corporation, All Rights Reserved

机器人国度