예제 #1
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 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");
        }
예제 #3
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);
    }