コード例 #1
0
ファイル: DB_Struct.cs プロジェクト: qipa/Unity3DMapEditor
    public override bool Equals(object obj)
    {
        if (obj == null)
        {
            return(false);
        }

        _CAMP_DATA c = (_CAMP_DATA)obj;

        if ((object)c == null)
        {
            return(false);
        }

        return((m_nCampID == c.m_nCampID) && (m_nPKModeID == c.m_nPKModeID) &&
               (m_uRelationFlags == c.m_uRelationFlags) && (m_uActiveFlags == c.m_uActiveFlags));
    }
コード例 #2
0
    public int GetRelationOther(CObject_Character pCharObj)
    {
        if (pCharObj.GetCharacterType() != CHARACTER_TYPE.CT_PLAYEROTHER)
        {
            return(-1);
        }
        _CAMP_DATA playerCampData = GetCharacterData().Get_CampData();

        // 目前只有和平全体组队模式 [8/19/2011 edit by ZL]
        switch (playerCampData.m_nPKModeID)
        {
        case (byte)PK_MODE.PK_MODE_PEACE:
            return(1);

        case (byte)PK_MODE.PK_MODE_GOODBAD:
            return(0);

        case (byte)PK_MODE.PK_MODE_PERSONAL:
            return(0);

        case (byte)PK_MODE.PK_MODE_GUILD:
            //			return pCharObj->GetCharacterData()->Get_Guild() ==
            //				CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_Guild() ? 0 : 1;
            return(0);

        case (byte)PK_MODE.PK_MODE_TEAM:
            //todo
//                     CTeamOrGroup playerTeam = null;
//                     playerTeam = CUIDataPool::GetMe()->GetTeamOrGroup();
//                     for ( int i = 0; i < playerTeam->GetTeamMemberCount(1); ++i ) {
//                         if ( playerTeam->GetMemberByIndex(i, 1)->m_szNick && strcmp(playerTeam->GetMemberByIndex(i, 1)->m_szNick,
//                                     pCharObj->GetCharacterData()->Get_Name()) == 0 ) {
//                             return 1;
//                         }
//                     }
            return(0);

        case (byte)PK_MODE.PK_MODE_FAMILY:
            return(0);

        default: return(1);
        }
        return(-1);
    }
コード例 #3
0
        public ENUM_RELATION GetCampType(CObject pObj_A, CObject pObj_B)
        {
            if (pObj_A == null || pObj_B == null)
            {
                return(ENUM_RELATION.RELATION_ENEMY);
            }

            if (pObj_A == pObj_B)
            {
                return(ENUM_RELATION.RELATION_FRIEND);
            }

            //      int idOwner_A, idOwner_B, idA, idB;
            //      idA			= pObj_A.ServerID;
            //      idB			= pObj_B.ServerID;
            //      idOwner_A	= pObj_A.ownerid;
            //      idOwner_B	= pObj_B->GetOwnerID();
            //      if ( idOwner_A != INVALID_ID || idOwner_B != INVALID_ID )
            //      {
            //          if ( idOwner_A == idOwner_B
            //              || idOwner_A == idB
            //              || idOwner_B == idA )
            //          {
            //              return RELATION_FRIEND;
            //          }
            //      }

            //const _CAMP_DATA *pCamp_A, *pCamp_B;
            //BOOL bHuman_A, bHuman_B;
            //const CampAndStandDataMgr_T *pCampMgr;

            //pCamp_A		= pObj_A->GetCampData();
            //pCamp_B		= pObj_B->GetCampData();
            //bHuman_A	= g_theKernel.IsKindOf( pObj_A->GetClass(), GETCLASS(CObject_PlayerMySelf));
            //bHuman_B	= g_theKernel.IsKindOf( pObj_B->GetClass(), GETCLASS(CObject_PlayerMySelf));
            //pCampMgr	= CGameProcedure::s_pCampDataMgr;

            _CAMP_DATA cap_a = pObj_A.GetCampData();
            _CAMP_DATA cap_b = pObj_B.GetCampData();

            return(CampStand.Instance.CalcRelationType(cap_a.m_nCampID, cap_b.m_nCampID));
        }
コード例 #4
0
    public OPERATE_RESULT IsCanUse_CheckTarget(int idUser, int idTargetObj, float fTargetX, float fTargetZ, float fDir)
    {
        switch ((ENUM_SELECT_TYPE)m_pDefine.m_nSelectType)
        {
        case ENUM_SELECT_TYPE.SELECT_TYPE_NONE:
            break;

        case ENUM_SELECT_TYPE.SELECT_TYPE_CHARACTER:
        {
            if (idTargetObj == MacroDefine.INVALID_ID)
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_FIGHT, "没有目标");
                return(OPERATE_RESULT.OR_NO_TARGET);
            }
            // m_nTargetMustInSpecialState--> 0:活的;1:死的; -1:没有要求
            bool TargetMustAliveFlag = (m_pDefine.m_nTargetMustInSpecialState == 0);

            CObject_Character pTargetObj = (CObject_Character)CObjectManager.Instance.FindServerObject(idTargetObj);
            if (pTargetObj == null)
            {
                return(OPERATE_RESULT.OR_ERROR);
            }
            else if (pTargetObj.CannotBeAttack())                    // 敌对状态时,也要判断npc是否可以被攻击 [9/26/2011 Ivan edit]
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_FIGHT, "无效目标");
                return(OPERATE_RESULT.OR_INVALID_TARGET);
            }
            CObject_Character pThisObj = (CObject_Character)CObjectManager.Instance.FindObject(idUser);
            if (pThisObj == null)
            {
                return(OPERATE_RESULT.OR_ERROR);
            }

            //阵营判断
            _CAMP_DATA    cap_a     = pThisObj.GetCampData();
            _CAMP_DATA    cap_b     = pTargetObj.GetCampData();
            ENUM_RELATION eCampType = CampStand.Instance.CalcRelationType(cap_a.m_nCampID, cap_b.m_nCampID);

            // 通过PK模式判断是否为敌人 [8/19/2011 edit by ZL]
            if (eCampType != ENUM_RELATION.RELATION_ENEMY)
            {
                int tempRelation = CObjectManager.Instance.getPlayerMySelf().GetRelationOther(pTargetObj);
                if (tempRelation != -1)
                {
                    eCampType = (ENUM_RELATION)tempRelation;
                }
            }
            if (m_pDefine.m_nFriendness < 0 && eCampType == ENUM_RELATION.RELATION_ENEMY)
            {
            }
            else if (m_pDefine.m_nFriendness > 0 && eCampType == ENUM_RELATION.RELATION_FRIEND)
            {
            }
            else if (m_pDefine.m_nFriendness == 0)
            {
            }
            else
            {
                return(OPERATE_RESULT.OR_INVALID_TARGET);
            }

            if (!pTargetObj.IsDie() &&
                TargetMustAliveFlag)
            {                    // 该技能只对活目标有效
            }
            else if (pTargetObj.IsDie() &&
                     !TargetMustAliveFlag)
            {                    // 该技能只对死目标有效
            }
            else
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_FIGHT, "无效目标");
                return(OPERATE_RESULT.OR_INVALID_TARGET);
            }
        }
        break;

        case ENUM_SELECT_TYPE.SELECT_TYPE_POS:
        {
            if (!(fTargetX >= 0.0f && fTargetZ >= 0.0f))
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_FIGHT, "无效目标");
                return(OPERATE_RESULT.OR_INVALID_TARGET_POS);
            }
        }
        break;

        case ENUM_SELECT_TYPE.SELECT_TYPE_DIR:
            break;

        case ENUM_SELECT_TYPE.SELECT_TYPE_SELF:
            break;
        }
        return(OPERATE_RESULT.OR_OK);
    }