• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            主要的幾個對象類

            1.Object類主要功能

            1) InWorld判斷和操作

            2) GUID

            Mangos的每個對象都有唯一的GUID,每類GUID的最大值是保存在數據庫中,初始化時候從數據庫加載。Mangos這樣做還是很奢侈的,國內服務器可能都存在合服需求,所以國內服務器操持角色ID不同即可。可能要合服的服務器在開服的時候要把的角色ID范圍要規劃好(天龍八部的角色ID的最大值是保存在數據庫中的)。國內服務器中對于重要物品、寵物可能需要唯一的ID,可以考慮角色ID + 物品、寵物id來實現。uint32應該夠用了,但是也要限制重要物品的種類和數量。

            3) Object類型TypeId

            enum TypeID

            {

            TYPEID_OBJECT = 0,

            TYPEID_ITEM = 1,

            TYPEID_CONTAINER = 2,

            TYPEID_UNIT = 3,

            TYPEID_PLAYER = 4,

            TYPEID_GAMEOBJECT = 5,

            TYPEID_DYNAMICOBJECT = 6,

            TYPEID_CORPSE = 7

            };

            4) 網絡包發送SendUpdateToPlayer

            5) 基本狀態組包ValuesOutOfRangeMovement UpdateBlock

            6) Int, UInt, float等標記數據設置、加載、訪問Get/SetXXXValueSetFlag

            union

            {

            int32 *m_int32Values;

            uint32 *m_uint32Values;

            float *m_floatValues;

            };

            Object有很多數據、狀態以數組形式存儲,訪問時候通過類型和標記定位。

            7) 任務判斷接口hasQuest

            2.Item類主要功能

            1) 創建和復制Create/CloneItem

            2) 所有者Owner(Player)

            3) 數據庫存取SaveTo/LoadFromDB

            Mangos的每個Item在數據中是作為一條記錄保存的,一般國內網游是打包保存在玩家記錄里面,國內網游的做法在數據庫效率上要高很多。

            4) 綁定Binding、損壞Broken、是否可交易CanBeTrade、疊放數量、是否裝備等一般道具屬性

            5) 在包中的位置Bag、Slot

            6) 增強狀態和時效Enhancement

            7) Timer更新

            8) 狀態更新和廣播State

            9) 技能和魔法相關Skill/Spell

            10) 任務相關hasQuest

            3.Bag類主要功能

            1) 增加、刪除、得到某位置的道具Store/RemoveItem

            2) 空間IsEmpty、GetFreeSlots

            3) 數據庫存取SaveTo/LoadFromDB

            4) 組包更新BuildCreateUpdateBlockForPlayer

            4.WorldObject類主要功能

            1) 位置和朝向RelocateSetOrientation

            2) 附近空間位置GetClosePoint

            3) 所在地圖、區域和地區GetMapIdGetZoneIdGetAreaId

            4) 名字GetName

            5) 和其它WorldObject位置、角度等關系IsWithinDistIsInRange

            6) 發送網絡消息SendMessageToSet

            7) 發送聊天、喊叫等消息MonsterSayMonsterYellToZone

            8) 對玩家來說是否可見isVisibleFor

            9) 召喚Creature,SummonCreature

            5.Unit類主要功能

            Unit類是很復雜的一個類,改類具有很多屬性和方法,實現了游戲中PlayerCreature等主要功能。

            1) 漸變狀態GetDiminishing

            2) 戰斗相關(計時器、攻擊對象、停止等)setAttackTimerAttackgetVictimSendMeleeAttackStop

            3) 單元狀態addUnitState

            4) 等級、種族、職業、裝甲、血量、傷害能力等屬性getLevelgetGendergetRaceGetArmorGetHealthGetPower

            5) 友好、敵對等陣營關系IsHostileToIsFriendlyTo

            6) 站立、行走、騎乘、戰斗、飛行、水下、恐懼、死亡等狀態getStandStateIsMountedDeathState

            7) 技能和傷害處理DealDamageMeleeSpellHitResultGetWeaponSkillValue

            8) 類型(商店、銀行、飛行點、行會、拍賣行等)isVendorisBanker

            9) 施展法術CastSpell

            10) 光環狀態和特效以及數值影響HasAuraRemoveAura

            11) 廣播傷害、攻擊狀態等消息SendAttackStateUpdateSendSpellMiss

            12) 主人、召喚者、寵物等信息GetOwnerGUIDSetCharmerGUIDGetPet

            13) 狀態更新廣播stat system

            14) 可見性處理Visibility system

            15) 威脅值處理Threat related methods

            16) DynamicObject對象和GameObject對象的附加GetDynObject

            17) event處理m_Events

            18) MotionMaster

            Unit類設計得過大,還包含了戰斗、技能、傷害處理、光環狀態影響等這些比較復雜的功能模塊。

            6.Creature類主要功能

            1) 加入到世界

            2) 加載裝備

            3) 數據庫存取

            4) 類型,是否是車輛、寵物、圖騰、精英等

            5) 能力,能否行走、游泳、飛行

            6) 對技能免疫

            7) AI和腳本

            8) 售賣的道具

            9) 狀態更新

            10) 對話內容

            11) 聊天、喊叫

            12) 戰斗行為,尋求幫助

            13) 重生處理

            14) 任務相關

            7.Player類主要功能

            1) 加入到世界

            2) 傳送

            3) 更新

            4) 社會關系

            5) 飛機

            6) 位置

            7) 寵物

            8) 聊天

            9) 裝備、背包和倉庫

            10) 增強狀態

            11) 完整的任務處理

            12) 數據庫存取

            13) 郵件

            14) 技能

            15) 天賦

            16) 聲望

            17) 戰場

            18) 戰斗狀態和模式更新

            19) 競技場

            20) 移動處理

            21) 副本

            22) 組隊

            Player類是繼Unit類后另外一個很大的類,實現和很多功能。我現在很佩服Mangos服務器的程序員的水平了,這么多功能,居然一個類搞定。這樣的代碼對后繼維護和修改者絕對是噩夢。

            其它類比較小,略過。

            久久99这里只有精品国产| 欧美与黑人午夜性猛交久久久| 狠狠色丁香婷婷综合久久来| 国产精品久久免费| 怡红院日本一道日本久久| 欧美日韩精品久久久久| 精品久久一区二区三区| 国内精品久久久久久中文字幕| 久久精品人人槡人妻人人玩AV| 精品少妇人妻av无码久久| 久久久国产精品网站| 久久露脸国产精品| 久久天天躁狠狠躁夜夜网站| 亚洲综合伊人久久大杳蕉| 国内精品久久久久| 99久久99这里只有免费的精品| 国产国产成人精品久久| 久久亚洲天堂| 国产精品久久午夜夜伦鲁鲁| 亚洲七七久久精品中文国产| 国产精品久久久久影院色| 亚洲精品无码久久千人斩| 免费精品久久久久久中文字幕| 粉嫩小泬无遮挡久久久久久| 久久久久人妻一区二区三区| 久久久亚洲精品蜜桃臀| 丰满少妇人妻久久久久久4| 国产精品免费福利久久| 色狠狠久久AV五月综合| 久久久久波多野结衣高潮| 久久精品国产亚洲一区二区三区 | 东方aⅴ免费观看久久av| 国内精品久久久久久久涩爱| 久久精品成人免费看| 国产精品一区二区久久| 狠狠色婷婷久久综合频道日韩| 亚洲人成电影网站久久| 久久婷婷五月综合国产尤物app| 久久综合鬼色88久久精品综合自在自线噜噜| 欧美亚洲国产精品久久蜜芽| 国产精品美女久久久久av爽|