魔兽世界70怀旧服推荐私服

彼と彼女の恋愛法則 | 彼と彼女の恋愛の法則について紹介しています。
やっぱり夏なので、私も世の女性の例に漏れず、ダイエットしてるんだよね。
まあなんも減ってませんけどそれなりに情報収集してるのよ。
でもスロースターターだから。
とりあえず今日調べたのは酵素ダイエットについて。
酵素ダイエットは、リバウンドしにくく、健康的な身体づくりに効果的らしい。
そんなに深刻に「異性と知り合うきっかけの状況」を一覧にするようなことをしなくても、問題ありません。「いくらなんでも無理でしょう」というシチュエーションでも、急にラブラブなお付き合いに進展するかもしれません。誰もがハッとするような男らしさをアピールするためには、各々の愛らしさを認識して鍛えあげる必要があります。この考えこそが恋愛テクニックをモノにするキモなのです。
異性が近づいてくる人間力を表現するためには、みなさんの女らしさを察知してもっと良くしようという意識が大切。この思考こそが恋愛テクニックを繰り出す秘技なのです。毎日、高い意識を持って行動に留意するようにはしているが、いつまで経っても思い描いたような知り合うきっかけがないというのなら、自分の行動を初めから吟味する必要があります。
進化心理学上の定義では、ヒトの精神的な行動は、その生物学的な発達の運びで作成されてきたと言われています。みなさんが恋愛をするその理由は進化心理学で究明された結果によると、子どもを残すためと分析されています。
恋愛中の最もウキウキしている時は、言うなれば“華やぐ心”を作るホルモンが脳内に漏出していて、やや「浮ついた」状況だとされています。ご大層に「異性と知り合うきっかけの日時や場所」を一覧にするようなことをしなくてもOKです。「いくらなんでも一筋縄にはいかないな」なんていうかしこまった場でも、意表をついて楽しい恋愛に発展するかもしれません。
恋愛相談がことの始まりとなって良い感情を持ってもらえて、彼女の同性の知人に会わせてくれるなどという奇跡が激増したり、恋愛相談が理由でその子自身と交際するようになったりする可能性も否定できません。恋愛相談を切り出した人と頼まれた人がくっつく男女は想像以上に多いです。ひょっとしてあなたが関心を寄せている異性が相談を依頼してきたらただの男性から彼氏に格上げされるべくすべきことを明確にしましょう。
居室から道路に出たら、その場所はもちろん異性と知り合うきっかけが待っているシチュエーションです。持続的に明るい思想を保って、適切な行動と明るい表情で他人と会話することが大切です。今となっては、だいたいの無料お見合い系は様々な危険性が低く、不安なく多くの異性と知り合うきっかけを見つけられるようになりました。安全面に配慮がなされ、個人情報も適宜、残しておけるサイトがいくつもあります。
恋愛においての悩みは大方、法則が見られます。周知の事実ですが、各自コンディションはまちまちですが、俯瞰の視野で捉えれば、然程種類が多いわけではないようです。異性へのアピールが大胆な拙者のことをお話すると、取引先から、何気なく立ち寄ったパブ、風邪を診てもらいに行った医院の待合室まで、なんの脈絡もないところで異性と知り合うきっかけ、お付き合いが始まっています。
無料でメールを用いた異性と知り合うきっかけもOKなどという不審なサイトはかなりできていのが現実です。胡散臭いサイトを用いることだけは、100%しないよう見る目を養ってください。女性だけでなく男性も怪しむことなく、無料で遊ぶために、よく流れているうわさ話やお見合い系に関する情報がわかるサイトで高い評価を得ているお見合い系サイトを活用してください。
リアルではない空間で真剣な異性と知り合うきっかけが潜んでいます。昼夜いつでも大丈夫だし、エリアだってオープンにせずに扱えるという大きなとりえを持っていますからね。親しい女のサークル仲間から恋愛相談に乗ってくれと頼まれたら、手際よく解決してあげないと、納得してもらえるどころか喋りかけてくれなくなってしまうシチュエーションも少なくないそうなので留意してください。
私のお気に入りは、こちら
初めて会った時からボーイフレンドにときめいていないと恋愛なんてできない!という概念は正しくはなくて、そんなに慌てずに自身の心をそのまま置いてほしいと思います。進化心理学の見地からは、ヒトの精神的な行動は、その生物学的な開展の経路で誕生してきたと想像されています。ホモサピエンスが恋愛をするその理由は進化心理学のリサーチによると、後胤を残すためと分析されています。
活動的で、それはもう多くの行事に出没しているにも関わらず、数年も知り合うきっかけがない、と嘆く人の多くは、思い込みにばかりとらわれて見流しているというのは否めません。女の人用の美容雑誌では、繰り返ししつこいくらい恋愛のHow Toが記載されていますが、ここだけの話あらかた現実的には使えず、所詮は机上の空論だったりもします。
進化心理学の見地からは、我々人間の内面的な行いは、その生物学的な展開の経緯で誕生してきたと考察されています。人間が恋愛を行うのは進化心理学における定義では、子どもを残すためと推測されています。大勢の人に接触を試みれば、来る日には夢にまで見た人と落ち合えるでしょう。ポイント課金システムを採用しているサイトではなく、無料のお見合い系サイトでは、そんな舞台を無料で楽しめるのです。
女のコの率が大きいサイトを利用したいのであれば、利用料がかかりますが、ポイント制や料金が定額のサイトを使うのが常套手段です。取り急ぎは無料サイトで勘所について覚えましょう。今や市民権を得ている「テリトリーシェア」という恋愛テクニックは、対象の人の住居周辺のトークが開始したときに「あー、それって私が予約を入れようとしたリストランテのある地域だ!」と目を丸くするという内容。
こと恋愛相談においては、相談をお願いした側は相談を依頼する前に考えは固まっていて、純粋に判定に自信が持てなくて、自分の畏怖をなくしたくて意見を求めていると考えられます。婚活サイトは、大体が女の人は無料です。しかし、たまに女性だけが会費を支払う婚活サイトも実在しており、“結婚したい!”という真剣な異性と知り合うきっかけを臨んでいる人でいつも賑わっています。
恋愛に関する悩みや弱みは誰一人として同じものはありません。幸せに恋愛を満喫するためには「恋愛の要所」を応用するための恋愛テクニックを用意しておきましょう。えっち目的というのは、自慢できるような恋愛ではないと思います。また、高級車を運転したり高いバッグを保持するように、自分を飾るためにボーイフレンドらと遊ぶのもちゃんとした恋とは言えません。
利用のためにポイントを買うサイトや男だけに料金設定のあるお見合い系サイトが蔓延しています。しかしそんな中でも、昨今は利用する人すべてが全て無料のお見合い系サイトも続々と増えています。親密な女の人から恋愛相談に乗ってくれと頼まれたら、賢く受け答えしないと、「ありがとう」と言われるのとは反対に呆れられてしまう場合も珍しくないので注意してください。魔兽私服这要怎么弄_百度知道
提问者采纳
就是说 你要把WOW升级到6.0 然后把其他没用的插件删掉
在把SF解压到游戏里 才能正常运转
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
魔兽私服的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁魔兽私服中玩什么职业好?
魔兽私服中玩什么职业好?
09-12-25 & 发布
设置不同职业强弱也不同啊,就拿你说的这个SF吧,表面看起来是这样,但是,属性呢?护甲呢?以及BOSS的攻击以及血量呢?还有BOSS的技能修复问题,技能伤害的问题。不过一般来讲SF里面还是近战的多啊,因为装备好刷,PK就猛,如果说BOSS的血厚但是攻击低,建议用战士,复苏之风就能回血;如果BOSS得血厚攻击高,我觉得还是2号双开刷比较好;如果再加上护甲的问题,单刷无疑就是圣骑了,穿着板甲的治疗,绝对牛啊。
请登录后再发表评论!魔兽私服服务器架设完全资料_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
240页¥7.4117页免费2页免费7页免费3页免费3页免费1页免费5页免费5页免费42页1下载券
喜欢此文档的还喜欢22页免费14页免费17页免费28页免费3页免费
魔兽私服服务器架设完全资料|魔​兽​私​服​服​务​器​架​设​完​全​资​料
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:33.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢6174人阅读
这几天有些空闲时间,把改编自MangOS的魔兽私服Trinitycore代码梳理一下,也给有这方面兴趣的童鞋一个交流空间,可能会连载15篇左右,大家慢慢看首先把整体架构网络层说一下
打开整个工程,找到Trinitycore项目,game这个库引用了framework,shared等库,以后有时间再一一介绍
Trinitycore_build_8128_for_client_333a/src/trinitycore/Main.cpp
这个主函数其实就是提取配置文件名称和在Windows环境下以WIN32 服务方式使用的三种情况,这种编程手法在我们很多项目中都很常见,就不多说了
最主要的就是这句
&return sMaster.Run();
这里最重要的一个步骤就是void World::SetInitialWorldSettings()其实我们做过网游开发的人都应该知道,这就是加载服务器的各种资源文件,初始化场景,初始化脚本引擎,序列化文件读取之类的步骤,每款游戏各有不同,但都是启动前最耗时间的一段程序
然后就是启动4个线程&ACE_Based::Thread world_thread(new WorldRunnable);&&& &world_thread.setPriority(ACE_Based::Highest);
&ACE_Based::Thread* cliThread = NULL;
&cliThread = new ACE_Based::Thread(new CliRunnable);
&ACE_Based::Thread rar_thread(new RARunnable);&FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable();
接着取得IP,和端口开始网络服务int WorldSocketMgr::StartNetwork (ACE_UINT16 port, const char* address)这个函数很明显,大家都可以找到,也可以很轻松找到下一个函数
int& WorldSocketMgr::StartReactiveIO (ACE_UINT16 port, const char* address)
在分析这个函数时不得不去仔细阅读一下另一个类的声明,只看一部分就够了typedef ACE_Svc_Handler&ACE_SOCK_STREAM, ACE_NULL_SYNCH& WorldHclass WorldSocket : protected WorldHandler{&&& public:&&&&&&& /// Declare some friends&&&&&&& friend class ACE_Acceptor& WorldSocket, ACE_SOCK_ACCEPTOR &;&&&&&&& friend class WorldSocketM&&&&&&& friend class ReactorR
&&&&&&& /// Declare the acceptor for this class&&&&&&& typedef ACE_Acceptor& WorldSocket, ACE_SOCK_ACCEPTOR & A----------这个模板定义很重要
WorldSocket 的 open 方法由接受器工厂在连接建立之后调用的时候调用
这样思路就完全清晰了
int WorldSocket::open (void *a)
函数中通过&& if (sWorldSocketMgr-&OnSocketOpen (this) == -1)&----这个方法,把这个SOCKET对象放入了一个合适的线程中&&&&&& &&return -1;
最后就是网络包对应逻辑处理的流程
WorldSocket::handle_input (ACE_HANDLE)---WorldSocket::handle_input_missing_data---WorldSocket::handle_input_payload---WorldSocket::ProcessIncoming (WorldPacket* new_pct)---最后进入int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)此函数最重要的部分,列出如下
//这句话生成了玩家的session,并保存&&& ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale), -1);
&&& m_Crypt.Init(&K);
&&& m_Session-&LoadGlobalAccountData();&&& m_Session-&LoadTutorialsData();&&& m_Session-&ReadAddonsInfo(recvPacket);
&&& // In case needed sometime the second arg is in microseconds 1 000 000 = 1 sec&&& ACE_OS::sleep (ACE_Time_Value (0, 10000));
&&& sWorld.AddSession (m_Session);
网络这一块真是难以用很漂亮的语言描述清楚,中间再加一个小插曲
WorldSocketMgr.cpp中定义了一个主动对象类,这个就是sWorldSocketMgr-&OnSocketOpen函数中分担各个WorldSocket的那个线程类
&&&&&&& virtual int svc ()&&&&&&& {&&&&&&&&&&& DEBUG_LOG ("Network Thread Starting");
&&&&&&&&&&& WorldDatabase.ThreadStart();
&&&&&&&&&&& ACE_ASSERT (m_Reactor);
&&&&&&&&&&& SocketSet::iterator i,
&&&&&&&&&&& while (!m_Reactor-&reactor_event_loop_done ())&&&&&&&&&&& {&&&&&&&&&&&&&&& // dont be too smart to move this outside the loop&&&&&&&&&&&&&&& // the run_reactor_event_loop will modify interval&&&&&&&&&&&&&&& ACE_Time_Value interval (0, 10000);
&&&&&&&&&&&&&&& if (m_Reactor-&run_reactor_event_loop (interval) == -1)&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& AddNewSockets ();
&&&&&&&&&&&&&&& for (i = m_Sockets.begin (); i != m_Sockets.end ();)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if ((*i)-&Update () == -1)-------------这就是int WorldSocket::Update (void)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& t =&&&&&&&&&&&&&&&&&&&&&&& ++i;&&&&&&&&&&&&&&&&&&&&&&& (*t)-&CloseSocket ();&&&&&&&&&&&&&&&&&&&&&&& (*t)-&RemoveReference ();&&&&&&&&&&&&&&&&&&&&&&& --m_C&&&&&&&&&&&&&&&&&&&&&&& m_Sockets.erase (t);&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&& ++i;&&&&&&&&&&&&&&& }&&&&&&&&&&& }
&&&&&&&&&&& WorldDatabase.ThreadEnd();
&&&&&&&&&&& DEBUG_LOG ("Network Thread Exitting");
&&&&&&&&&&& return 0;&&&&&&& }
然而在AddNewSockets ()中,他把这一批次生成的新连接保存到另一个叫作
m_Sockets的数据成员中,并把起初保存WorldSocket的m_NewSockets清空而正是由于在下面这个函数中m_NewSockets被填充
&&&&&&& int AddSocket (WorldSocket* sock)&&&&&&& &{&&&&&&&&&&& &&ACE_GUARD_RETURN (ACE_Thread_Mutex, Guard, m_NewSockets_Lock, -1);
&&&&&&&&&&& &&++m_C&&&&&&&&&&& &&sock-&AddReference();&&&&&&&&&&& &&sock-&reactor (m_Reactor);&&&&&&&&&&& &&m_NewSockets.insert (sock);
&&&&&&&&&& &&&return 0;&&&&&&& &}
导火索又回到了
int WorldSocketMgr::OnSocketOpen (WorldSocket* sock){
&&& for (size_t i = 1; i & m_NetThreadsC ++i)&&&&&&& &if (m_NetThreads[i].Connections () & m_NetThreads[min].Connections ())&&&&&&&&&&& &&min =
&&& &&& return m_NetThreads[min].AddSocket (sock);}
最后,我们进入最关键的类World
还记得刚才描述过的流程吗在这一步
int WorldSocket::HandleAuthSession (WorldPacket& recvPacket)里面生成了玩家的Session
&&& ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale), -1);&.....&&& sWorld.AddSession (m_Session);
注意有一个插曲
void World::AddSession(WorldSession* s)
&addSessQueue.add(s);//先暂时放到了 ACE_Based::LockedQueue&WorldSession*, ACE_Thread_Mutex& addSessQ}
而后再下面这个函数中
void World::UpdateSessions(uint32 diff){&&& ///- Add new sessions&&& WorldSession*&&& while (addSessQueue.next(sess))&&&&&&& AddSession_ (sess);&//又通过AddSession_ 将WorldSession*保存到了一个typedef UNORDERED_MAP&uint32, WorldSession*& SessionM& SessionMap m_sessions 这样类型的容器中;
&&& ///- Then send an update signal to remaining ones&&& for (SessionMap::iterator itr = m_sessions.begin(), itr != m_sessions.end(); itr = next)&&& {&&&&&&& next =&&&&&&& ++
&&&&&&& ///- and remove not active sessions from the list&&&&&&& if (!itr-&second-&Update(diff))&&&&&&&&&&&&&&&&&&&&& // As interval = 0&&&&&&& {&&&&&&&&&&& if (!RemoveQueuedPlayer(itr-&second) && itr-&second && getConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE))&&&&&&&&&&&&&&& m_disconnects[itr-&second-&GetAccountId()] = time(NULL);&&&&&&&&&&& delete itr-&&&&&&&&&&&& m_sessions.erase(itr);&&&&&&& }&&& }}其实这种先放到一个,再放入一个正式的容器,其实是为了踢号用的
最后指出几个地方,这是处理逻辑的
world的update在此调用
/// Heartbeat for the Worldvoid WorldRunnable::run(){&&& ///- Init new SQL thread for the world database&&& WorldDatabase.ThreadStart();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // let thread do safe mySQL requests (one connection call enough)
&&& sWorld.InitResultQueue();
&&& uint32 realCurrTime = 0;&&& uint32 realPrevTime = getMSTime();
&&& uint32 prevSleepTime = 0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // used for balanced full tick time length near WORLD_SLEEP_CONST
&&& ///- While we have not World::m_stopEvent, update the world&&& while (!World::IsStopped())&&& {&&&&&&& ++World::m_worldLoopC&&&&&&& realCurrTime = getMSTime();
&&&&&&& uint32 diff = getMSTimeDiff(realPrevTime,realCurrTime);
&&&&&&& sWorld.Update( diff );------------------------------------------------------在这&&&&&&& realPrevTime = realCurrT
&&&&&&& // diff (D0) include time of previous sleep (d0) + tick time (t0)&&&&&&& // we want that next d1 + t1 == WORLD_SLEEP_CONST&&&&&&& // we can't know next t1 and then can use (t0 + d1) == WORLD_SLEEP_CONST requirement&&&&&&& // d1 = WORLD_SLEEP_CONST - t0 = WORLD_SLEEP_CONST - (D0 - d0) = WORLD_SLEEP_CONST + d0 - D0&&&&&&& if (diff &= WORLD_SLEEP_CONST+prevSleepTime)&&&&&&& {&&&&&&&&&&& prevSleepTime = WORLD_SLEEP_CONST+prevSleepTime-&&&&&&&&&&& ACE_Based::Thread::Sleep(prevSleepTime);&&&&&&& }&&&&&&& else&&&&&&&&&&& prevSleepTime = 0;
&&&&&&& #ifdef WIN32&&&&&&&&&&& if (m_ServiceStatus == 0) World::StopNow(SHUTDOWN_EXIT_CODE);&&&&&&&&&&& while (m_ServiceStatus == 2) Sleep(1000);&&&&&&& #endif&&& }
&&& sWorld.KickAll();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // save and kick all players&&& sWorld.UpdateSessions( 1 );&&&&&&&&&&&&&&&&&&&&&&&&&&&& // real players unload required UpdateSessions call
&&& // unload battleground templates before different singletons destroyed&&& sBattleGroundMgr.DeleteAllBattleGrounds();
&&& sWorldSocketMgr-&StopNetwork();
&&& MapManager::Instance().UnloadAll();&&&&&&&&&&&&&&&&&&&& // unload all grids (including locked in memory)
&&& ///- End the database thread&&& WorldDatabase.ThreadEnd();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // free mySQL thread resources}
worldsession 的update在
/// Update the World !void World::Update(uint32 diff){&&& m_updateTime = uint32(diff);&&& if (m_configs[CONFIG_INTERVAL_LOG_UPDATE])&&& {&&&&&&& if (m_updateTimeSum & m_configs[CONFIG_INTERVAL_LOG_UPDATE])&&&&&&& {&&&&&&&&&&& sLog.outBasic("Update time diff: %u. Players online: %u.", m_updateTimeSum / m_updateTimeCount, GetActiveSessionCount());&&&&&&&&&&& m_updateTimeSum = m_updateT&&&&&&&&&&& m_updateTimeCount = 1;&&&&&&& }&&&&&&& else&&&&&&& {&&&&&&&&&&& m_updateTimeSum += m_updateT&&&&&&&&&&& ++m_updateTimeC&&&&&&& }&&& }
&&& ///- Update the different timers&&& for (int i = 0; i & WUPDATE_COUNT; ++i)&&&&&&& if (m_timers[i].GetCurrent() &= 0)&&&&&&&&&&& m_timers[i].Update(diff);&&& else m_timers[i].SetCurrent(0);
&&& ///- Update the game time and check for shutdown time&&& _UpdateGameTime();
&&& /// Handle daily quests reset time&&& if (m_gameTime & m_NextDailyQuestReset)&&& {&&&&&&& ResetDailyQuests();&&&&&&& m_NextDailyQuestReset += DAY;&&& }
&&& if (m_gameTime & m_NextWeeklyQuestReset)&&&&&&& ResetWeeklyQuests();
&&& /// &ul&&li& Handle auctions when the timer has passed&&& if (m_timers[WUPDATE_AUCTIONS].Passed())&&& {&&&&&&& auctionbot.Update();&&&&&&& m_timers[WUPDATE_AUCTIONS].Reset();
&&&&&&& ///- Update mails (return old mails with item, or delete them)&&&&&&& //(tested... works on win)&&&&&&& if (++mail_timer & mail_timer_expires)&&&&&&& {&&&&&&&&&&& mail_timer = 0;&&&&&&&&&&& objmgr.ReturnOrDeleteOldMails(true);&&&&&&& }
&&&&&&& ///- Handle expired auctions&&&&&&& auctionmgr.Update();&&& }
&&& /// &li& Handle session updates when the timer has passed&&& RecordTimeDiff(NULL);&&& UpdateSessions(diff);-----------------------------------------------------在这里&&& RecordTimeDiff("UpdateSessions");
&&& /// &li& Handle weather updates when the timer has passed&&& if (m_timers[WUPDATE_WEATHERS].Passed())&&& {&&&&&&& m_timers[WUPDATE_WEATHERS].Reset();
&&&&&&& ///- Send an update signal to Weather objects&&&&&&& WeatherMap::iterator itr,&&&&&&& for (itr = m_weathers.begin(); itr != m_weathers.end(); itr = next)&&&&&&& {&&&&&&&&&&& next =&&&&&&&&&&& ++
&&&&&&&&&&& ///- and remove Weather objects for zones with no player&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //As interval & WorldTick&&&&&&&&&&& if (!itr-&second-&Update(m_timers[WUPDATE_WEATHERS].GetInterval()))&&&&&&&&&&& {&&&&&&&&&&&&&&& delete itr-&&&&&&&&&&&&&&&& m_weathers.erase(itr);&&&&&&&&&&& }&&&&&&& }&&& }&&& /// &li& Update uptime table&&& if (m_timers[WUPDATE_UPTIME].Passed())&&& {&&&&&&& uint32 tmpDiff = (m_gameTime - m_startTime);&&&&&&& uint32 maxClientsNum = GetMaxActiveSessionCount();
&&&&&&& m_timers[WUPDATE_UPTIME].Reset();&&&&&&& loginDatabase.PExecute("UPDATE uptime SET uptime = %u, maxplayers = %u WHERE realmid = %u AND starttime = " UI64FMTD, tmpDiff, maxClientsNum, realmID, uint64(m_startTime));&&& }
&&& /// &li& Clean logs table&&& if (sWorld.getConfig(CONFIG_LOGDB_CLEARTIME) & 0) // if not enabled, ignore the timer&&& {&&&&&&& if (m_timers[WUPDATE_CLEANDB].Passed())&&&&&&& {&&&&&&&&&&& //uint32 tmpDiff = (m_gameTime - m_startTime);&&&&&&&&&&& //uint32 maxClientsNum = sWorld.GetMaxActiveSessionCount();
&&&&&&&&&&& m_timers[WUPDATE_CLEANDB].Reset();&&&&&&&&&&& loginDatabase.PExecute("DELETE FROM logs WHERE (time + %u) & "UI64FMTD";",&&&&&&&&&&&&&&& sWorld.getConfig(CONFIG_LOGDB_CLEARTIME), uint64(time(0)));&&&&&&& }&&& }
&&& /// &li& Handle all other objects&&& ///- Update objects when the timer has passed (maps, transport, creatures,...)&&& MapManager::Instance().Update(diff);&&&&&&&&&&&&&&& // As interval = 0
&&& /*if (m_timers[WUPDATE_OBJECTS].Passed())&&& {&&&&&&& m_timers[WUPDATE_OBJECTS].Reset();&&&&&&& MapManager::Instance().DoDelayedMovesAndRemoves();&&& }*/
&&& static uint32 autobroadcaston = 0;&&& autobroadcaston = sConfig.GetIntDefault("AutoBroadcast.On", 0);&&& if (autobroadcaston == 1)&&& {&&&&&& if (m_timers[WUPDATE_AUTOBROADCAST].Passed())&&&&&& {&&&&&&&&& m_timers[WUPDATE_AUTOBROADCAST].Reset();&&&&&&&&& SendRNDBroadcast();&&&&&& }&&& }
&&& sBattleGroundMgr.Update(diff);&&& RecordTimeDiff("UpdateBattleGroundMgr");
&&& sOutdoorPvPMgr.Update(diff);&&& RecordTimeDiff("UpdateOutdoorPvPMgr");
&&& // execute callbacks from sql queries that were queued recently&&& UpdateResultQueue();&&& RecordTimeDiff("UpdateResultQueue");
&&& ///- Erase corpses once every 20 minutes&&& if (m_timers[WUPDATE_CORPSES].Passed())&&& {&&&&&&& m_timers[WUPDATE_CORPSES].Reset();
&&&&&&& CorpsesErase();&&& }
&&& ///- Process Game events when necessary&&& if (m_timers[WUPDATE_EVENTS].Passed())&&& {&&&&&&& m_timers[WUPDATE_EVENTS].Reset();&&&&&&&&&&&&&&&&&& // to give time for Update() to be processed&&&&&&& uint32 nextGameEvent = gameeventmgr.Update();&&&&&&& m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent);&&&&&&& m_timers[WUPDATE_EVENTS].Reset();&&& }
&&& // update the instance reset times&&& sInstanceSaveManager.Update();
&&& // And last, but not least handle the issued cli commands&&& ProcessCliCommands();}
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:35471次
排名:千里之外
原创:19篇
评论:31条
(1)(3)(2)(6)(3)(6)

我要回帖

更多关于 魔兽世界70怀旧服推荐 的文章

 

随机推荐