//发送存钱消息
        public int SaveMoneyToBank(int amount)
        {
            if (amount == 0)
            {
                return(0);
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (pCharData != null)
            {
                if ((pCharData.Get_Money()) >= amount)
                {
                    byte        SaveType = (byte)CGBankMoney.OPtype.SAVE_MONEY;
                    CGBankMoney msg      = new CGBankMoney();
                    msg.SaveType    = (SaveType);
                    msg.AmountMoney = (amount);
                    NetManager.GetNetManager().SendPacket(msg);
                }
                else
                {
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_INTERCOURSE, "存钱数目超过身上金钱数目");
                }
            }
            return(0);
        }
        public float GetFloatData(string typeName)
        {
            if (CObjectManager.Instance.getPlayerMySelf() == null)
            {
                return(-1);
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (typeName == "EXP") //经验
            {
                if (pCharData.Get_Exp() < 0)
                {
                    return(0);
                }
                else
                {
                    return(pCharData.Get_Exp());
                }
            }
            else if (typeName == "NEEDEXP") //升级经验
            {
                return(pCharData.Get_MaxExp());
            }
            return(0);
        }
        //发送存元宝消息
        public int SaveRMBToBank(string szRMB)
        {
            int Amount = int.Parse(szRMB);

            if (Amount == 0)
            {
                return(0);
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (pCharData != null)
            {
                if ((pCharData.Get_RMB()) >= Amount)
                {
                    byte        SaveType = (byte)CGBankMoney.OPtype.SAVE_RMB;
                    CGBankMoney msg      = new CGBankMoney();
                    msg.SaveType  = SaveType;
                    msg.AmountRMB = Amount;
                    NetManager.GetNetManager().SendPacket(msg);
                }
                else
                {
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_INTERCOURSE, "存元宝的数目超过身上元宝的数目");
                }
            }
            return(0);
        }
示例#4
0
    //------------
    //角色属性创建/销毁
    //------------
    public CCharacterData CharacterData_Create(CObject_Character character)
    {
        //创建新的角色数据
        CCharacterData pNewCharacterData = new CCharacterData(character);

        m_mapAllCharacterData[character.ID] = pNewCharacterData;

        return(pNewCharacterData);
    }
        internal void PacketItem_UserEquip(CObject_Item item)
        {
            if (item == null)
            {
                return;
            }
            //摆摊时不可以随便换装
            //...TODO

            //验证是否可以使用
            if (!item.Rule(ITEM_RULE.RULE_USE))
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, item.RuleFailMessage(ITEM_RULE.RULE_USE));
                return;
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (pCharData == null)
            {
                LogManager.LogError("playerMyself's charData is null.");
                return;
            }
            int needLevel   = item.GetNeedLevel();
            int playerLevel = pCharData.Get_Level();

            if (playerLevel < needLevel)
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "等级不够");

                return;
            }
            //是否鉴定
            if (((CObject_Item_Equip)item).GetEquipQuantity() == EQUIP_QUALITY.BLUE_EQUIP &&
                ((CObject_Item_Equip)item).GetEquipAttrib() == EQUIP_ATTRIB.EQUIP_ATTRIB_UNIDENTIFY)
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "此物品需要鉴定");
                return;
            }

            //取得详细信息
            string szExtraInfo = item.GetExtraDesc();

            //如果没有详细信息,从服务器上请求详细信息
            if (szExtraInfo == "")
            {
                CDataPool.Instance.UserBag_AskExtraInfo(item.PosIndex);
            }

            CGUseEquip msg = new CGUseEquip();

            msg.BagIndex = (byte)item.PosIndex;
            NetManager.GetNetManager().SendPacket(msg);
        }
        public BankMoney GetBagMoney()
        {
            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            int nMoney = 0;

            if (pCharData != null)
            {
                nMoney = pCharData.Get_Money();
            }
            return(TransformCoin(nMoney));
        }
示例#7
0
    public override void UpdateCharRace()
    {
        m_pCharRace = null;
        CCharacterData pCharacterData = GetCharacterData();

        if (pCharacterData != null && pCharacterData.Get_RaceID() != MacroDefine.INVALID_ID)
        {
            DBC.COMMON_DBC <_DBC_CHAR_RACE> raceDBC = CDataBaseSystem.Instance.GetDataBase <_DBC_CHAR_RACE>((int)DataBaseStruct.DBC_CHAR_RACE);

            if (raceDBC != null)
            {
                m_pCharRace = raceDBC.Search_Index_EQU(pCharacterData.Get_RaceID());
                if (m_pCharRace != null)
                {
                    LogManager.Log("Race ID:" + pCharacterData.Get_RaceID().ToString() + "Model ID:" + m_pCharRace.nModelID.ToString());
                }
            }
        }
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                //刷新心法升级后的客户端数据(心法等级、当前金钱、当前经验值)
                GCStudyXinfa   packet    = pPacket as GCStudyXinfa;
                CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();
                GCStudyXinfa._STUDERESULT_INFO studyResult = packet.StudyResult;
                pCharData.Set_SkillClass(studyResult.m_idXinfa, studyResult.m_StudedLevel);

                // 刷新所有技能 [10/18/2011 Ivan edit]
                pCharData.UpdateAllSkillClassState();

                string Action = string.Format("{0};0", (int)(ENUM_BASE_ACTION.BASE_ACTION_XINFA_LEVEL_UP));
                CObjectManager.Instance.getPlayerMySelf().SetChatMoodAction(Action);

                //发送更新界面的事件
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_SKILLSTUDY_SUCCEED);
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_SKILL_UPDATE);
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
示例#9
0
    // 得到自己的队伍信息(从自己的数据池获取)
    void FillMyInfo(TeamMemberInfo member)
    {
        if (member == null)
        {
            throw new NullReferenceException("team member in FillMyInfo(member)");
        }

        CObject_PlayerMySelf pMe = CObjectManager.Instance.getPlayerMySelf();

        CCharacterData pMyData = pMe.GetCharacterData();

        if (null == pMyData)
        {
            return;
        }
        member.m_szNick        = pMyData.Get_Name();
        member.m_uFamily       = pMyData.Get_MenPai();
        member.m_uDataID       = pMyData.Get_RaceID();
        member.m_uLevel        = pMyData.Get_Level();
        member.m_nPortrait     = pMyData.Get_PortraitID();
        member.m_WorldPos.m_fX = pMe.GetPosition().x;
        member.m_WorldPos.m_fZ = pMe.GetPosition().z;
        member.m_nHP           = pMyData.Get_HP();
        member.m_dwMaxHP       = pMyData.Get_MaxHP();
        member.m_nMP           = pMyData.Get_MP();
        member.m_dwMaxMP       = pMyData.Get_MaxMP();
        member.m_nAnger        = 100; // 客户端没有
        member.m_WeaponID      = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_WEAPON);
        member.m_CapID         = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_CAP);
        member.m_ArmourID      = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_ARMOR);
        member.m_CuffID        = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_CUFF);
        member.m_FootID        = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_BOOT);
        member.m_uBackID       = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_BACK);//  [8/30/2010 Sun]
        member.m_bDead         = (pMe.CharacterLogic_Get() == ENUM_CHARACTER_LOGIC.CHARACTER_LOGIC_DEAD);

        member.m_uFaceMeshID = pMyData.Get_FaceMesh();
        member.m_uHairMeshID = pMyData.Get_HairMesh();
        member.m_uHairColor  = pMyData.Get_HairColor();
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCCharBaseAttrib charBaseAttribPacket = (GCCharBaseAttrib)pPacket;

            //LogManager.Log("RECV GCCharBaseAttrib : Flag=" + charBaseAttribPacket.Flag);

            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                //LogManager.LogWarning("RECV GCCharBaseAttrib : id=" + charBaseAttribPacket.ObjectID);
                CObjectManager pObjectManager = CObjectManager.Instance;

                CObject pObj = (CObject)(pObjectManager.FindServerObject(charBaseAttribPacket.ObjectID));
                if (pObj == null || !(pObj is CObject_Character))
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                bool bAddLoadTask = false;

                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();

                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_DATA_ID) && !bAddLoadTask)
                {
                    try
                    {
                        //if (pObj is CObject_PlayerMySelf)
                        //{
                        //    LogManager.Log("主角收到RaceID:" + charBaseAttribPacket.DataID);
                        //}
                        //else if (pObj is CObject_PlayerOther)
                        //{
                        //    LogManager.Log("其他玩家收到RaceID:" + charBaseAttribPacket.DataID);
                        //}
                        pCharacterData.Set_RaceID(charBaseAttribPacket.DataID);
                        //LogManager.LogWarning("SetRace in GCCharBaseAttribHandler = " + charBaseAttribPacket.DataID + " ObjectID= " + pObj.ServerID);
                    }
                    catch (Exception e)
                    {
                        LogManager.LogError(e.ToString());
                    }
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_CAMP_ID))
                {
                    pCharacterData.Set_CampData(charBaseAttribPacket.CampData);
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_NAME))
                {
                    string name = UIString.Instance.GetUnicodeString(charBaseAttribPacket.Name);
                    pCharacterData.Set_Name(name);
                }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_TITLE))
//              {
//                  pCharacterData.Set_CurTitle(charBaseAttribPacket.getTitle());
//                  pCharacterData.Set_CurTitleType(charBaseAttribPacket.getTitleType());
//                  CEventSystem::GetMe().PushEvent(GE_CUR_TITLE_CHANGEED);
//              }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_LEVEL))
                {
                    pCharacterData.Set_Level(charBaseAttribPacket.Level);
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_HP_PERCENT))
                {
                    pCharacterData.Set_HPPercent(charBaseAttribPacket.HPPercent / 100.0f);
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_MP_PERCENT))
                {
                    pCharacterData.Set_MPPercent(charBaseAttribPacket.MPPercent / 100.0f);
                }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_RAGE))
//              {
//                  pCharacterData.Set_Rage(charBaseAttribPacket.getRage() );
//              }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_STEALTH_LEVEL))
                {
                    pCharacterData.Set_StealthLevel(charBaseAttribPacket.StealthLevel);
                }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_SIT))
//              {
//                  //pCharacterData.Set_Sit(charBaseAttribPacket.IsSit() );
//              }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_MOVE_SPEED))
                {
                    if (pObj is CObject_PlayerMySelf)
                    {
                        LogManager.Log("主角收到MOVE_SPEED:" + charBaseAttribPacket.MoveSpeed);
                    }
                    pCharacterData.Set_MoveSpeed(charBaseAttribPacket.MoveSpeed);
                }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_ATTACK_SPEED))
//              {
//                  //必须是主角
//                  if(pObj == CObjectManager::GetMe().GetMySelf())
//                      pCharacterData.Set_AttackSpeed((int)charBaseAttribPacket.AttackSpeed);
//              }

//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_OWNER))
//              {
//                  pCharacterData.Set_OwnerID(charBaseAttribPacket.OwnerID);
//              }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_OCCUPANT))
//              {
//                  pCharacterData.Set_OccupantGUID(charBaseAttribPacket.OccupantGUID);
//              }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_PORTRAIT_ID))
                {
                    pCharacterData.Set_PortraitID(charBaseAttribPacket.PortraitID);
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_MODEL_ID) && !bAddLoadTask)
                {
                    pCharacterData.Set_ModelID(charBaseAttribPacket.ModelID);
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_MOUNT_ID) && !bAddLoadTask)
                {
                    pCharacterData.Set_MountID(charBaseAttribPacket.MountID);//坐骑ID
                }
                if (charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_PLAYER_DATA))
                {
                    pCharacterData.Set_FaceMesh(charBaseAttribPacket.FaceMesh);
                    pCharacterData.Set_HairMesh(charBaseAttribPacket.HairMesh);
                    pCharacterData.Set_HairColor(charBaseAttribPacket.HairColor);
                }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_IS_IN_STALL))
//              {
//                  pCharacterData.Set_IsInStall(charBaseAttribPacket.getIsOpen());
//              }
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_STALL_NAME))
//              {
//                  pCharacterData.Set_StallName(charBaseAttribPacket.getStallName());
//              }
//
//              if(charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_STALL_NAME))
//              {
//                  pCharacterData.Set_StallName(charBaseAttribPacket.getStallName());
//              }
//		        pObj.SetMsgTime(CGameProcedure::s_pTimeSystem.GetTimeNow());

                //如果不是玩家自己
//		        if(pObj != (CObject*)CObjectManager::GetMe().GetMySelf() && charBaseAttribPacket.IsUpdateAttrib(ENUM_UPDATE_CHAR_ATT.UPDATE_CHAR_ATT_AITYPE))
                ///	        {
                //		        pCharacterData.Set_AIType(charBaseAttribPacket.getAIType());

                //	        }
            }
            else
            {
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                GCDetailEquipList pPacket = packet as GCDetailEquipList;
                CObject           pObj    = CObjectManager.Instance.FindServerObject((int)pPacket.ObjId);
                if (pObj == null || !(pObj is CObject_Character))
                {
                    LogManager.LogError("找不到对应的NPC, ID:" + pPacket.ObjId);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();

                //刷入数据池
                uint dwEquipMask = pPacket.PartFlags;
                if (pObj != (CObject)CObjectManager.Instance.getPlayerMySelf())
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                            }
                            else
                            {
                                pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                                 (ushort)item.m_ItemGUID.m_Server,
                                                 (uint)item.m_ItemGUID.m_Serial);
                                pItemObj.SetExtraInfo(ref item);
                                pItemObj.SetTypeOwner(ITEM_OWNER.IO_PLAYEROTHER_EQUIP);
                                pItemObj.PosIndex = (short)i;

                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                            }
                        }
                        else
                        {
                            CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                        }
                    }

//                  CObject_PlayerOther* TargetAvatar = CObjectManager::GetMe()->GetTarget_Avatar();
//
//                  TargetAvatar->GetCharacterData()->Set_RaceID( ((CObject_Character*)pObj)->GetCharacterData()->Get_RaceID() );
//                  for(INT i=0; i<HEQUIP_NUMBER; i++)
//                  {
//                      TargetAvatar->GetCharacterData()->Set_Equip((HUMAN_EQUIP)i,((CObject_Character*)pObj)->GetCharacterData()->Get_Equip((HUMAN_EQUIP)i));
//                  }
//                  TargetAvatar->SetFaceDir(0.0f);
//
//                  CDataPool::GetMe()->Copy_To_TargetEquip(pObj);

                    // 更新其他玩家身上的装备到ActionSystem
                    CActionSystem.Instance.OtherPlayerEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OTHERPLAYER_UPDATE_EQUIP);
                }
                else
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                continue;
                            }

                            pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                             (ushort)item.m_ItemGUID.m_Server,
                                             (uint)item.m_ItemGUID.m_Serial);
                            pItemObj.SetExtraInfo(ref item);
                            pItemObj.SetTypeOwner(ITEM_OWNER.IO_MYSELF_EQUIP);
                            pItemObj.PosIndex = (short)i;

                            CDataPool.Instance.UserEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                        }
                    }

                    // 更新主角身上的装备到ActionSystem
                    CActionSystem.Instance.UserEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_EQUIP);
                }
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPack, ref Peer pPlayer)
        {
            LogManager.Log("RECV GCCharEquipment Packet ");
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                CObjectManager  pObjectManager = CObjectManager.Instance;
                GCCharEquipment pPacket        = (GCCharEquipment)pPack;
                CObject         pObj           = (CObject)(pObjectManager.FindServerObject((int)pPacket.getObjID()));
                if (pObj == null || !(pObj is CObject_Character))
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                /*
                 *              static UINT pBuf[UPDATE_CHAR_ATT_NUMBERS];
                 *              pPacket.FillParamBuf( (VOID*)pBuf );
                 *
                 *              SCommand_Object cmdTemp;
                 *              cmdTemp.m_wID			= OC_UPDATE_EQUIPMENT;
                 *              cmdTemp.m_adwParam[0]	= pPacket.getFlags();
                 *              cmdTemp.m_apParam[1]	= (VOID*)pBuf;
                 *              pObj.PushCommand(&cmdTemp );
                 */
                //刷入数据池
                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();
                //		if(pObj == (CObject*)CObjectManager::GetMe().GetMySelf())
                {
                    uint dwEquipFlag = pPacket.getFlags();

                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_WEAPON)) != 0)
                    {
                        pCharacterData.Set_EquipGem(HUMAN_EQUIP.HEQUIP_WEAPON, (int)pPacket.getWeaponGemID());
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_WEAPON, (int)pPacket.getWeaponID());
                    }

                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_CAP)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_CAP, (int)pPacket.getCapID());
                    }

                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_ARMOR)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_ARMOR, (int)pPacket.getArmourID());
                        pCharacterData.Set_EquipGem(HUMAN_EQUIP.HEQUIP_ARMOR, (int)pPacket.getArmourGemID());
                    }

                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_CUFF)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_CUFF, (int)pPacket.getCuffID());
                    }

                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_BOOT)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_BOOT, (int)pPacket.getBootID());
                    }

                    //  [8/30/2010 Sun]
                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_BACK)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_BACK, (int)pPacket.getBackID());
                    }

                    // 支持进入游戏时,服务器刷新肩甲 [4/27/2011 ivan edit]
                    if ((dwEquipFlag & (1 << (int)HUMAN_EQUIP.HEQUIP_SASH)) != 0)
                    {
                        pCharacterData.Set_Equip(HUMAN_EQUIP.HEQUIP_SASH, (int)pPacket.getSashID());
                        pCharacterData.Set_EquipGem(HUMAN_EQUIP.HEQUIP_SASH, (int)pPacket.getSashGemID());
                    }
                }

                pObj.PushDebugString("GCCharEquipment");
                pObj.SetMsgTime(GameProcedure.s_pTimeSystem.GetTimeNow());
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public string GetData(string typeName)
        {
            if (CObjectManager.Instance.getPlayerMySelf() == null)
            {
                return("");
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (typeName == "LEVEL")      //等级
            {
                return(pCharData.Get_Level().ToString());
            }
            else if (typeName == "HP") //生命值
            {
                return(pCharData.Get_HP().ToString());
            }
            else if (typeName == "MP") //魔法值
            {
                return(pCharData.Get_MP().ToString());
            }
            else if (typeName == "MENPAI")  //门派
            {
                return(pCharData.Get_MenPai().ToString());
            }
            else if (typeName == "AMBIT") //境界名称
            {
                return(pCharData.Get_Ambit().ToString());
            }
            else if (typeName == "PORTRAIT") //头像
            {
                //得到玩家和自己的头像
                string pImageName = "";
                //打开生物定义表
                _DBC_CHAR_FACE pFaceImage = CDataBaseSystem.Instance.GetDataBase <_DBC_CHAR_FACE>((int)DataBaseStruct.DBC_CHAR_FACE).Search_Index_EQU(pCharData.Get_PortraitID());

                if (pFaceImage != null)
                {
                    pImageName = pFaceImage.pImageSetName;
                }

                //else // 默认状态不显示头像图标, 头像图标显示空
                //{
                //	pFaceImage = (const _DBC_CHAR_FACE*)(s_pFaceImageDBC->Search_LineNum_EQU(0));
                //	pImageName = pFaceImage->pImageSetName;
                //}//

                return(pImageName);
            }
            else if (typeName == "STR") //力量 力量 金
            {                           //基础值
                return((pCharData.Get_STR() - pCharData.Get_BringSTR()).ToString());
            }
            else if (typeName == "SPR") //灵气 灵力 木
            {
                return((pCharData.Get_SPR() - pCharData.Get_BringSPR()).ToString());
            }
            else if (typeName == "CON") //体制 体制 水
            {
                return((pCharData.Get_CON() - pCharData.Get_BringCON()).ToString());
            }
            else if (typeName == "INT") //定力 智力 火
            {
                return((pCharData.Get_INT() - pCharData.Get_BringINT()).ToString());
            }
            else if (typeName == "DEX") //身法 敏捷 土
            {
                return((pCharData.Get_DEX() - pCharData.Get_BringDEX()).ToString());
            }
            else if (typeName == "BRING_STR")
            {
                return(pCharData.Get_BringSTR().ToString());
            }
            else if (typeName == "BRING_SPR")
            {
                return(pCharData.Get_BringSPR().ToString());
            }
            else if (typeName == "BRING_CON")
            {
                return(pCharData.Get_BringCON().ToString());
            }
            else if (typeName == "BRING_INT")
            {
                return(pCharData.Get_BringINT().ToString());
            }
            else if (typeName == "BRING_DEX")
            {
                return(pCharData.Get_BringDEX().ToString());
            }
            else if (typeName == "ATT_PHYSICS")                 //物理攻击力
            {
                return(pCharData.Get_AttPhysics().ToString());
            }
            else if (typeName == "ATT_MAGIC")                           // 魔法攻击力 [7/16/2011 ivan edit]
            {
                return(pCharData.Get_AttMagic().ToString());
            }
            else if (typeName == "DEF_PHYSICS")                 //物理防御力
            {
                return(pCharData.Get_DefPhysics().ToString());
            }
            else if (typeName == "DEF_MAGIC")                           //魔法防御力
            {
                return(pCharData.Get_DefMagic().ToString());
            }
            else if (typeName == "HIT")                                 //命中率
            {
                return(pCharData.Get_Hit().ToString());
            }
            else if (typeName == "MISS")                                //闪避率
            {
                return(pCharData.Get_Miss().ToString());
            }
            else if (typeName == "CRITRATE")                            //会心率
            {
                return(pCharData.Get_CritRate().ToString());
            }
            else if (typeName == "DEFCRITRATE")                 // 会心防御 [12/24/2010 ivan edit]
            {
                return(pCharData.Get_DefCritRate().ToString());
            }
            else if (typeName == "MAXHP")   //最大生命值
            {
                return(pCharData.Get_MaxHP().ToString());
            }
            else if (typeName == "MAXMP") //最大魔法值
            {
                return(pCharData.Get_MaxMP().ToString());
            }

            return("0");
        }
示例#14
0
    protected override RC_RESULT OnCommand(SCommand_Object pCmd)
    {
        RC_RESULT rcResult = RC_RESULT.RC_SKIP;

        switch ((OBJECTCOMMANDDEF)pCmd.m_wID)
        {
        case OBJECTCOMMANDDEF.OC_UPDATE_EQUIPMENT:
        {
            uint   dwModifyFlags = pCmd.GetValue <uint>(0);
            uint[] pData         = pCmd.GetValue <uint[]>(1);
            int    i;
            uint   dwIndex = 0;
            for (i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
            {
                if ((dwModifyFlags & (1 << i)) != 0)
                {
                    GetCharacterData().Set_Equip((HUMAN_EQUIP)i, (int)(pData[dwIndex]));
                    dwIndex++;
                }
            }
            rcResult = RC_RESULT.RC_OK;
        }
        break;

        case OBJECTCOMMANDDEF.OC_UPDATE_TEAM_FLAG:
        {
            if (this != CObjectManager.Instance.getPlayerMySelf())
            {
                CCharacterData pData = GetCharacterData();
                pData.Set_HaveTeamFlag(pCmd.GetValue <byte>(0) == 1);
                pData.Set_TeamLeaderFlag(pCmd.GetValue <byte>(1) == 1);
                pData.Set_TeamFullFlag(pCmd.GetValue <byte>(2) == 1);
            }
            rcResult = RC_RESULT.RC_OK;
        }
        break;

//  case OBJECTCOMMANDDEF.OC_TEAM_FOLLOW_MEMBER:
//      {
//          CCharacterData* pData = GetCharacterData();
//
//          pData->Set_TeamFollowListCount( pCmd->m_adwParam[0] );
//
//          for( INT i=0; i<(INT)(pCmd->m_adwParam[0]); ++i )
//          {
//              pData->Set_TeamFollowedMember(i, pCmd->m_adwParam[i+1]);
//          }
//
        //          rcResult = RC_RESULT.RC_OK;
//      }
//      break;
//  case OBJECTCOMMANDDEF.OC_UPDATE_TEAM_FOLLOW_FLAG:
//      {
//          CCharacterData* pData = GetCharacterData();
//
//          pData->Set_TeamFollowFlag( pCmd->m_abParam[0] );
//          CharacterLogic_GetAI()->OnAIStopped();
//
        //          rcResult = RC_RESULT.RC_OK;
//      }
//      break;
        default:
            return(base.OnCommand(pCmd));
        }

        return(rcResult);
    }
示例#15
0
    protected void UpdateEquip(HUMAN_EQUIP point)
    {
        CCharacterData pCharacterData = GetCharacterData();

        if (pCharacterData == null)
        {
            return;
        }

        //生成一个临时的Item对象
        int nID = pCharacterData.Get_Equip(point);

//          CObject_Item_Equip pTempEquip = null;
//
//          if(nID != MacroDefine.INVALID_ID)
//          {
//              pTempEquip = (CObject_Item_Equip)CObject_Item.NewItem(nID);
//               visualID = pTempEquip.GetVisualID();
//          }
        //因为和物品相关的代码还没有完成,暂时直接访问数据库  [1/4/2012 ZZY]
        DBC.COMMON_DBC <_DBC_ITEM_EQUIP_BASE> equipBaseDBC = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_EQUIP_BASE>((int)DataBaseStruct.DBC_ITEM_EQUIP_BASE);

        _DBC_ITEM_EQUIP_BASE pEquip = equipBaseDBC.Search_Index_EQU(nID);
        //如果是装备根据装配点装备物品
        bool result = false;

        if (/*pTempEquip != null && ITEM_CLASS.ICLASS_EQUIP == pTempEquip.GetItemClass()*/ pEquip != null && pEquip.nVisualID != MacroDefine.INVALID_ID)
        {
            if (point == HUMAN_EQUIP.HEQUIP_WEAPON)
            {
                if (m_bHideWeapon == true && mRenderInterface != null)               //如果当前正隐藏武器,那么不装备武器 [2012/4/18 ZZY]
                {
                    mRenderInterface.changeRightWeapon("");
                    mRenderInterface.changeLeftWeapon("");
                    SetWeaponType(ENUM_WEAPON_TYPE.WEAPON_TYPE_NONE);
                }
                else
                {
                    result = EquipItem_BodyLocator(/*pTempEquip.GetItemType()*/ point, pEquip.nVisualID);
                    SetWeaponType((ENUM_WEAPON_TYPE)pEquip.nType);
                }
            }
            else
            {
                result = EquipItem_BodyPart(point, pEquip.nVisualID);
            }
        }
        else
        {
            //卸载装备
            UnEquipItem(point);
        }
        //  [5/6/2011 ivan edit]
        if (result == false)
        {
            UnEquipItem(point);
        }


        //CObject_Item.DestroyItem(pTempEquip);
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCDetailAttrib detailAttribPacket = (GCDetailAttrib)pPacket;

            //LogManager.Log("RECV GCCharBaseAttrib : Flag=" + detailAttribPacket.Flags);

            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                CObjectManager pObjectManager = CObjectManager.Instance;

                CObject pObj = (CObject)(pObjectManager.FindServerObject((int)detailAttribPacket.ObjID));
                if (pObj == null || !(pObj is CObject_Character))
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();

                //        //玩家详细的属性刷新

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_LEVEL))                //0
                {
                    pCharacterData.Set_Level((int)detailAttribPacket.LV);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_HP))                   //1
                {
                    pCharacterData.Set_HP(detailAttribPacket.HP);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MP))                   //2
                {
                    pCharacterData.Set_MP(detailAttribPacket.MP);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_EXP))                  //3
                {
                    pCharacterData.Set_Exp(detailAttribPacket.Exp);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MONEY))                //4
                {
                    pCharacterData.Set_Money(detailAttribPacket.Money);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_STR))  //5
                {
                    pCharacterData.Set_STR(detailAttribPacket.Str);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_SPR))  //6
                {
                    pCharacterData.Set_SPR(detailAttribPacket.SPR);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_CON))  //7
                {
                    pCharacterData.Set_CON(detailAttribPacket.CON);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_INT))   //8
                {
                    pCharacterData.Set_INT(detailAttribPacket.INT);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DEX))   //9
                {
                    pCharacterData.Set_DEX(detailAttribPacket.DEX);
                }
                //        if ( flagDetail.isSetBit( DETAIL_ATTRIB_POINT_REMAIN) )//10
                //            pCharacterData->Set_PointRemain(pPacket->GetPoint_Remain());
                // 培养点数
                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_STR_RANDOM_POINT))                                     //力量 力量
                {
                    pCharacterData.Set_BringSTR(detailAttribPacket.StrRandomPoint);
                }
                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_SPR_RANDOM_POINT))                                     //力量 力量
                {
                    pCharacterData.Set_BringSPR(detailAttribPacket.SprRandomPoint);
                }
                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_CON_RANDOM_POINT))
                {
                    pCharacterData.Set_BringCON(detailAttribPacket.ConRandomPoint);
                }
                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_INT_RANDOM_POINT))
                {
                    pCharacterData.Set_BringINT(detailAttribPacket.IntRandomPoint);
                }
                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DEX_RANDOM_POINT))
                {
                    pCharacterData.Set_BringDEX(detailAttribPacket.DexRandomPoint);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_ATT_PHYSICS))   //11
                {
                    pCharacterData.Set_AttPhysics(detailAttribPacket.PhysicsAttk);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DEF_PHYSICS))   //12
                {
                    pCharacterData.Set_DefPhysics(detailAttribPacket.PhysicsDef);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_ATT_MAGIC))   //13
                {
                    pCharacterData.Set_AttMagic(detailAttribPacket.MagicAttk);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DEF_MAGIC))   //14
                {
                    pCharacterData.Set_DefMagic(detailAttribPacket.MagicDef);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MAXHP))                //15
                {
                    pCharacterData.Set_MaxHP(detailAttribPacket.MaxHP);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MAXMP))                //16
                {
                    pCharacterData.Set_MaxMP(detailAttribPacket.MaxMP);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_HP_RESPEED))   //17
                {
                    pCharacterData.Set_HPRespeed(detailAttribPacket.HPReSpeed);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MP_RESPEED))   //18
                {
                    pCharacterData.Set_MPRespeed(detailAttribPacket.MPReSpeed);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_HIT))  //19
                {
                    pCharacterData.Set_Hit(detailAttribPacket.Hit);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MISS)) //20
                {
                    pCharacterData.Set_Miss(detailAttribPacket.Miss);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_CRITRATE))     //21
                {
                    pCharacterData.Set_CritRate(detailAttribPacket.CriticalRate);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DEFENCE_C))    //24
                {
                    pCharacterData.Set_DefCritRate(detailAttribPacket.CriticalDef);
                }


                //if ( detailAttribPacket.IsSetBit( ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_RAGE) )	//22
                //{
                //    pCharacterData.Set_Rage(detailAttribPacket.Rage);

                //    // 怒气更新要通知界面。2006-4-26
                //    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UNIT_RAGE);
                //}

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_STRIKE_POINT)) //23
                {
                    pCharacterData.Set_StrikePoint(detailAttribPacket.StrikePoint);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MOVESPEED))                    //24
                {
                    pCharacterData.Set_MoveSpeed(detailAttribPacket.MoveSpeed);
                }

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKSPEED))	//25
                //            pCharacterData->Set_AttackSpeed(pPacket->GetAttSpeed());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKCOLD))	//26
                //            pCharacterData->Set_AttWater(pPacket->GetAttCold());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCECOLD))	//27
                //            pCharacterData->Set_DefWater(pPacket->GetDefCold());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKFIRE))	//28
                //            pCharacterData->Set_AttFire(pPacket->GetAttFire());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCEFIRE))	//29
                //            pCharacterData->Set_DefFire(pPacket->GetDefFire());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKLIGHT))	//30
                //            pCharacterData->Set_AttMetal(pPacket->GetAttLight());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCELIGHT))	//31
                //            pCharacterData->Set_DefMetal(pPacket->GetDefLight());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKPOISON))	//32
                //            pCharacterData->Set_AttWood(pPacket->GetAttPoison());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCEPOISON))	//33
                //            pCharacterData->Set_DefWood(pPacket->GetDefPoison());

                //        // 增加土攻土防 [11/9/2011 Ivan edit]
                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKEARTH))
                //            pCharacterData->Set_AttEarth(pPacket->GetAttEarth());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCEEARTH))
                //            pCharacterData->Set_DefEarth(pPacket->GetDefEarth());

                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKWIND))	//风攻
                ////            pCharacterData->Set_AttWind(pPacket->GetAttWind());
                ////
                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCEWIND))	//风防
                ////            pCharacterData->Set_DefWind(pPacket->GetDefWind());
                ////
                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_ATTACKTHUNDER))	//雷攻
                ////            pCharacterData->Set_AttThunder(pPacket->GetAttThunder());
                ////
                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_DEFENCETHUNDER))	//雷防
                ////            pCharacterData->Set_DefThunder(pPacket->GetDefThunder());

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MENPAI))               //34
                {
                    pCharacterData.Set_MenPai(detailAttribPacket.MenPai);
                }

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_GUILD)	)		//34
                //            pCharacterData->Set_Guild(pPacket->GetGuild());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_CAMP)	)			//35
                //            pCharacterData->Set_CampData(pPacket->GetCampData());

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_DATAID))                       //36
                //pCharacterData.Set_RaceID(detailAttribPacket.DataID); //因为数据包接收错误 暂时屏蔽接收Race ID

                {
                    if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MODELID))                  //36
                    {
                        pCharacterData.Set_ModelID(detailAttribPacket.ModelID);
                    }
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MOUNTID))                      //37
                {
                    pCharacterData.Set_MountID(detailAttribPacket.MountID);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_CURRENT_PET_GUID))                     //37
                {
                    pCharacterData.Set_CurrentPetGUID(detailAttribPacket.CurrentPet);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_LIMIT_MOVE))   //38
                {
                    pCharacterData.SetLimitMove(detailAttribPacket.LimitMove);
                }

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_CAN_ACTION1)	)	//39
                //            pCharacterData->SetCanActionFlag1(pPacket->GetCanActionFlag1());

                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_CAN_ACTION2)	)	//40
                //            pCharacterData->SetCanActionFlag2(pPacket->GetCanActionFlag2());

                //        //if(flagDetail.isSetBit(DETAIL_ATTRIB_LIMIT_USE_SKILL)	)	//39
                //        //	pCharacterData->SetLimitUseSkill(pPacket->GetLimitUseSkill());

                //        //if(flagDetail.isSetBit(DETAIL_ATTRIB_LIMIT_HANDLE)	)	//40
                //        //	pCharacterData->SetLimitHandle(pPacket->GetLimitHandle());

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_RMB))
                {
                    pCharacterData.Set_RMB(detailAttribPacket.RMBMoney);
                }
                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_MAX_VIGOR) )
                ////            pCharacterData->Set_MaxVigor(pPacket->GetMaxVigor());

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_ENERGY))
                {
                    pCharacterData.Set_DoubleExpTime_Num(detailAttribPacket.DoubleExpTimeNum);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_HELPMASK))
                {
                    pCharacterData.Set_TutorialMask(detailAttribPacket.HelpMask);
                }

                if (detailAttribPacket.IsSetBit(ENUM_DETAIL_ATTRIB.DETAIL_ATTRIB_MAX_ENERGY))
                {
                    pCharacterData.Set_MaxEnergy(detailAttribPacket.MaxEnergy);
                }

                //        //if(flagDetail.isSetBit(DETAIL_ATTRIB_GOODBADVALUE) )
                //        //	pCharacterData->Set_GoodBadValue(pPacket->GetGoodBadValue());

                ////		if(flagDetail.isSetBit(DETAIL_ATTRIB_MISSION_HAVEDONE_FLAGS) )
                ////			pCharacterData->Set_QuestHistory(pPacket->GetMissionHaveDoneFlags());

                ////        if(flagDetail.isSetBit(DETAIL_ATTRIB_AMBIT_EXP))
                ////            pCharacterData->Set_AmbitExp(pPacket->GetAmbitExp());
                ////
                //        if(flagDetail.isSetBit(DETAIL_ATTRIB_AMBIT))
                //            pCharacterData->Set_Ambit(pPacket->GetAmbit());

                //        pObj->PushDebugString("GCDetailAttrib");
                //        pObj->SetMsgTime(CGameProcedure::s_pTimeSystem->GetTimeNow());
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
示例#17
0
    public OPERATE_RESULT IsCanUse_CheckDeplete(int idUser)
    {
        CObject_Character pUser = (CObject_Character)CObjectManager.Instance.FindObject(idUser);

        if (pUser == null)
        {
            return(OPERATE_RESULT.OR_ERROR);
        }

        CCharacterData pCharData = CDataPool.Instance.CharacterData_Get(idUser);

        if (pCharData == null)
        {
            return(OPERATE_RESULT.OR_ERROR);
        }

        // 心法要求
        //const SCLIENT_XINFA* pXinfa = CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_XinFa(m_pDefine->m_nXinFaID);
        //if ( pXinfa && pXinfa->m_nLevel <m_pDefine->m_nXinFaLevelRequirement )
        //{
        //	return OR_NEED_HIGH_LEVEL_XINFA;
        //}

        // 武器判断
        if (m_pDefine.m_bMustUseWeapon != 0)
        {
            if (pUser.GetCharacterData().Get_Equip(HUMAN_EQUIP.HEQUIP_WEAPON) == MacroDefine.INVALID_ID)
            {
                return(OPERATE_RESULT.OR_NEED_A_WEAPON);
            }
        }

        // 消耗判断
        if (m_pDeplete == null)
        {
            //Assert( m_pDeplete != NULL && "SCLIENT_SKILL::IsCanUse_CheckDeplete" );
            return(OPERATE_RESULT.OR_OK);
        }
        //待实现
        CImpact_Character impactChar = pUser.Impact;
        uint nDerateAllImpactID      = MacroDefine.UINT_MAX;

        if (impactChar.isExistEffect(nDerateAllImpactID))
        {
            return(OPERATE_RESULT.OR_OK);
        }

        // 是否有减免当前技能消耗的BUFF
        uint nDerateCurImpactID = MacroDefine.UINT_MAX;

        if (impactChar.isExistEffect(nDerateCurImpactID))
        {
            return(OPERATE_RESULT.OR_OK);
        }
//
        if (m_pDeplete.m_nHP > 0)
        {
            // 是否有减免HP消耗的BUFF
            uint nDerateHPImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateHPImpactID))
            {
                if (pCharData.Get_HP() < m_pDeplete.m_nHP)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_HP);
                }
            }
        }
//
        if (m_pDeplete.m_nMP > 0)
        {
            // 是否有减免MP消耗的BUFF
            uint nDerateMPImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateMPImpactID))
            {
                if (pCharData.Get_MP() < m_pDeplete.m_nMP)
                {
                    return(OPERATE_RESULT.OR_LACK_MANA);
                }
            }
        }
//
        //if (m_pDeplete.m_nSP > 0)
        //{
        //    // 是否有减免SP消耗的BUFF
        //    uint nDerateSPImpactID = MacroDefine.UINT_MAX;
        //    if (!impactChar.isExistEffect(nDerateSPImpactID))
        //    {
        //        if (pCharData.Get_Rage() < m_pDeplete.m_nSP)
        //            return OPERATE_RESULT.OR_NOT_ENOUGH_RAGE;
        //    }
        //}
//
        if (m_pDeplete.m_nStrikePoint > 0)
        {
            // 是否有减免StrikePoint消耗的BUFF
            // 这里的m_pDeplete->m_nStrikePoint为连技段
            uint nDerateStrikePointImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateStrikePointImpactID))
            {
                int nStrikePoint = m_pDeplete.m_nStrikePoint * 3;
                if (pCharData.Get_StrikePoint() < nStrikePoint)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_STRIKE_POINT);
                }
            }
        }
//
        if (m_pDeplete.m_nItemID != MacroDefine.INVALID_ID)
        {
            // 是否有减免Item消耗的BUFF
            uint nDerateItemImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateItemImpactID))
            {
                int nIndex = CDataPool.Instance.UserBag_GetItemIndexByID(m_pDeplete.m_nItemID);
                if (nIndex == -1)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_ITEM);
                }
            }
        }
        return(OPERATE_RESULT.OR_OK);
    }