Beispiel #1
0
ORESULT SCLIENT_SKILL::IsCanUse( INT idUser, INT idTargetObj, FLOAT fTargetX, FLOAT fTargetZ, FLOAT fDir )const
{
	ORESULT oResult;

	oResult = IsCanUse_Leaned();	// 是否已经学会
	if ( OR_FAILED( oResult ) )
		return oResult;

	oResult = IsCanUse_CheckCoolDown();	// 冷却
	if ( OR_FAILED( oResult ) )
		return oResult;

	oResult = IsCanUse_CheckDeplete( idUser );	// 其他条件判断
	if ( OR_FAILED( oResult ) )
		return oResult;

	oResult = IsCanUse_CheckTarget( idUser, idTargetObj, fTargetX, fTargetZ, fDir );	// 对选择目标进行判断
	if ( OR_FAILED( oResult ) )
		return oResult;

	return OR_OK;
}
UINT CGIssuePetPlacardHandler::Execute( CGIssuePetPlacard* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION

    GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
    Assert( pGamePlayer ) ;

    Obj_Human* pHuman = pGamePlayer->GetHuman() ;
    Assert( pHuman ) ;
    
    Scene* pScene = pHuman->getScene() ;
    if( pScene==NULL )
    {
        Assert(FALSE) ;
        return PACKET_EXE_ERROR ;
    }

    //检查线程执行资源是否正确
    Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;

    Obj_Monster *pNpc = (Obj_Monster*)(pScene->GetObjManager()->GetObj(pPacket->GetNpcID()));
    if(pNpc != NULL)
    {
        PetPlacardSystem *pPetPlacardSystem = pNpc->GetPetPlacardSystem();
        if(pPetPlacardSystem == NULL)
        {
            pNpc->CreatePetPlacardSystem();
            pPetPlacardSystem = pNpc->GetPetPlacardSystem();
        }
        if(pPetPlacardSystem != NULL)
        {
            CHAR* pMessage = pPacket->GetMessage();
            BYTE nMessageSize = (BYTE)strlen( pMessage );
            if( nMessageSize >= PET_PLACARD_ITEM_MESSAGE_SIZE ) nMessageSize = PET_PLACARD_ITEM_MESSAGE_SIZE-1;
            pMessage[PET_PLACARD_ITEM_MESSAGE_SIZE-1] = 0;
            ReplaceIllegalString( pMessage, nMessageSize );

            ORESULT oResult = pPetPlacardSystem->IssuePlacard(pHuman, pPacket->GetGUID(), pMessage);
            if(OR_FAILED(oResult))
            {
                pHuman->SendOperateResultMsg(oResult);
            }
        }
    }

    return PACKET_EXE_CONTINUE ;

__LEAVE_FUNCTION

    return PACKET_EXE_ERROR ;
}
UINT CGCharMoodStateHandler::Execute( CGCharMoodState* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
	GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
	Assert( pGamePlayer != NULL ) ;
	if ( pGamePlayer == NULL )
	{
		g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoodStateHandler: Error (pGamePlayer == NULL) " ) ;
		return PACKET_EXE_CONTINUE ;
	}

	Obj_Human* pHuman = pGamePlayer->GetHuman() ;
	Assert( pHuman != NULL ) ;
	if ( pHuman == NULL )
	{
		g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoodStateHandler: Error (pHuman == NULL) " ) ;
		return PACKET_EXE_CONTINUE ;
	}

	Scene* pScene = pHuman->getScene() ;
	Assert( pScene != NULL ) ;
	if ( pScene == NULL )
	{
		g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoodStateHandler: Error Obj = %d (pScene == NULL) ", pHuman->GetID() ) ;
		return PACKET_EXE_CONTINUE ;
	}

	//检查线程执行资源是否正确
	Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
	if ( MyGetCurrentThreadID() != pScene->m_ThreadID )
	{
		g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoodStateHandler: Error Obj = %d (MyGetCurrentThreadID() != pScene->m_ThreadID) ", pHuman->GetID() ) ;
		return PACKET_EXE_CONTINUE ;
	}

	ORESULT oResult = pHuman->GetHumanAI()->PushCommand_MoodState(pPacket->getMoodState());
	if ( OR_FAILED( oResult ) )
	{
		pHuman->SendOperateResultMsg(oResult);
	}

	g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoodStateHandler: ok obj=%d guid=%X scene=%d", 
		pHuman->GetID(), pHuman->GetGUID(), pScene->SceneID() ) ;

	return PACKET_EXE_CONTINUE ;

__LEAVE_FUNCTION

	return PACKET_EXE_ERROR ;
}
uint CGStallCloseHandler::Execute( CGStallClose* pPacket, Player* pPlayer )
{
	__ENTER_FUNCTION

	GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
	Assert( pGamePlayer ) ;

	Obj_Human* pHuman = pGamePlayer->GetHuman() ;
	Assert( pHuman ) ;

	Scene* pScene = pHuman->getScene() ;
	if( pScene==NULL )
	{
		Assert(FALSE) ;
		return PACKET_EXE_ERROR ;
	}
	//检查线程执行资源是否正确
	Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;

	//验证是否有资格摆摊
	if(pHuman->m_StallBox.GetStallStatus() != ServerStallBox::STALL_OPEN)
	{//丢弃
		g_pLog->FastSaveLog( LOG_FILE_1, "ERROR: CGStallCloseHandler::ObjID=%d, != ServerStallBox::STALL_OPEN"
			,pHuman->GetID()) ;
		return PACKET_EXE_CONTINUE ;
	}


	pHuman->m_StallBox.GetBBS()->SaveTitle();

	//验证完毕,设置摊位盒
	pHuman->m_StallBox.CleanUp();

	ORESULT oResult = pHuman->GetHumanAI()->PushCommand_Idle( );
	if ( OR_FAILED( oResult ) )
	{
		pHuman->SendOperateResultMsg(oResult);
	}

	GCStallClose MsgClose;
	pGamePlayer->SendPacket(&MsgClose);
	g_pLog->FastSaveLog( LOG_FILE_1, "CGStallCloseHandler::ObjID=%d"
		,pHuman->GetID()) ;
	return PACKET_EXE_CONTINUE ;

	__LEAVE_FUNCTION

		return PACKET_EXE_ERROR ;
}
UINT CGCharMoveHandler::Execute( CGCharMove* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
    GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
    if ( pGamePlayer == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler: Error (pGamePlayer == NULL) " ) ;
        return PACKET_EXE_CONTINUE ;
    }

    Obj_Human* pHuman = pGamePlayer->GetHuman() ;
    if ( pHuman == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler: Error (pHuman == NULL) " ) ;
        return PACKET_EXE_CONTINUE ;
    }

    Scene* pScene = pHuman->getScene() ;
    if ( pScene == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler: Error Obj = %d (pScene == NULL) ", pHuman->GetID() ) ;
        return PACKET_EXE_CONTINUE ;
    }

    //检查线程执行资源是否正确
    Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
    if ( MyGetCurrentThreadID() != pScene->m_ThreadID )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler: Error Obj = %d (MyGetCurrentThreadID() != pScene->m_ThreadID) ", pHuman->GetID() ) ;
        return PACKET_EXE_CONTINUE ;
    }

    const WORLD_POS* pCur = pHuman->getWorldPos();
    WORLD_POS posCur = *pCur;
    pScene->GetMap()->VerifyPos( &posCur ) ;

    if(pHuman->m_StallBox.GetStallStatus() == ServerStallBox::STALL_OPEN)
    {//摆摊中
        GCCharMoveResult msgResult;
        msgResult.setResult(OR_CAN_NOT_MOVE_STALL_OPEN);
        msgResult.setHandleID(pPacket->getHandleID());
        pGamePlayer->SendPacket( &msgResult ) ;

        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler::摆摊中") ;
        return PACKET_EXE_CONTINUE ;
    }

    ObjID_t ObjID = pHuman->GetID() ;
    INT nHandleID = pPacket->getHandleID();
    WORLD_POS CurPos = *pHuman->getWorldPos() ;
    WORD wNumPathNode = (WORD)(pPacket->getNumTargetPos());
    WORLD_POS *paTarPos = (WORLD_POS *)pPacket->getTargetPos() ;
    ORESULT oResult = pHuman->GetHumanAI()->PushCommand_Move( nHandleID, wNumPathNode, paTarPos, TRUE );
    if ( OR_FAILED( oResult ) )
    {
        GCCharMoveResult msgResult;
        msgResult.setResult(oResult);
        msgResult.setHandleID(pPacket->getHandleID());
        if( oResult == OR_CUT_PATHROUTE && wNumPathNode > 0 )
        {
            for(WORD w = 0; w < wNumPathNode; w ++ )
            {
                msgResult.addTargetPos(paTarPos+w);
            }
        }
        else
        {
            pHuman->GetHumanAI()->PushCommand_Idle( ) ;
            pHuman->Teleport( &posCur ) ;
        }
        pGamePlayer->SendPacket( &msgResult ) ;
    }

    if ( wNumPathNode > 0 )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler::ObjID=%d X=%f Y=%f", 
            ObjID, paTarPos[wNumPathNode-1].m_fX, paTarPos[wNumPathNode-1].m_fZ ) ;
    }
    else
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharMoveHandler::ObjID=%d , no target pos", ObjID ) ;
    }

    return PACKET_EXE_CONTINUE ;

__LEAVE_FUNCTION

    return PACKET_EXE_ERROR ;
}
UINT CGCharUseSkillHandler::Execute( CGCharUseSkill* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
    GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
    Assert( pGamePlayer != NULL ) ;
    if ( pGamePlayer == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: Error (pGamePlayer == NULL) " ) ;
        return PACKET_EXE_CONTINUE ;
    }

    Obj_Human* pHuman = pGamePlayer->GetHuman() ;
    Assert( pHuman != NULL ) ;
    if ( pHuman == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: Error (pHuman == NULL) " ) ;
        return PACKET_EXE_CONTINUE ;
    }

    Scene* pScene = pHuman->getScene() ;
    Assert( pScene != NULL ) ;
    if ( pScene == NULL )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: Error Obj = %d (pScene == NULL) ", pHuman->GetID() ) ;
        return PACKET_EXE_CONTINUE ;
    }

    //检查线程执行资源是否正确
    Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
    if ( MyGetCurrentThreadID() != pScene->m_ThreadID )
    {
        g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: Error Obj = %d (MyGetCurrentThreadID() != pScene->m_ThreadID) ", pHuman->GetID() ) ;
        return PACKET_EXE_CONTINUE ;
    }

    ObjID_t ObjID            = pHuman->GetID() ;
    SkillID_t idSkill        = pPacket->getSkillDataID() / 100;
    BYTE nLevel                = pPacket->getSkillDataID() % 100;
    ObjID_t idTarget        = pPacket->getTargetID();
    WORLD_POS posTarget        = pPacket->getTargetPos() ;
    FLOAT fDir                = pPacket->getDir() ;
    //now the target guid only use to call of human(拉人去指定位置的操作)
    GUID_t    guidTarget        = pPacket->getTargetGUID();

    Obj_Character *pTarget = (Obj_Character*)(pScene->GetObjManager()->GetObj(idTarget));
    if( pTarget )
    {
        //技能 类型
        Skill_Module::SkillTemplateData_T const* pSkillTemplate = g_SkillTemplateDataMgr.GetInstanceByID(idSkill);
        INT SkillType = pSkillTemplate->GetStandFlag();
        if (SkillType > 0)
        {    
            //相同阵营,可以释放
            if( pHuman->IsEnemy( pTarget ) == TRUE )
            {
                g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: %s and %s  isn't the same camp! ", pHuman->GetName(), pTarget->GetName() ) ;
                return    PACKET_EXE_CONTINUE;
            }
        }else if(SkillType < 0)
        {
            // 不同阵营,可以释放
            if( pHuman->IsEnemy( pTarget ) == FALSE )
            {
                g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: %s and %s  is the same camp! ", pHuman->GetName(), pTarget->GetName() ) ;
                return    PACKET_EXE_CONTINUE;
            }
        }
    }
    else
    {
        //g_pLog->FastSaveLog( LOG_FILE_1, "ERROR: CGCharUseSkillHandler::ObjName=%s, ERR_OWNER_INVALID"
        //    ,pHuman->GetName()) ;
        //return PACKET_EXE_CONTINUE;
    }

    if ( pPacket->getObjID() == pHuman->GetID() )
    {
        ORESULT oResult = pHuman->GetHumanAI()->PushCommand_UseSkill( idSkill, nLevel, idTarget, posTarget.m_fX, posTarget.m_fZ, fDir, guidTarget );
        if ( OR_FAILED( oResult ) )
        {
            pHuman->SendOperateResultMsg(oResult);
        }
    }
    else
    {
        Obj_Pet *pPet = pHuman->GetPet();
        if ( pPet != NULL && pPet->GetID() == pPacket->getObjID() )
        {
            ORESULT oResult = pPet->GetPetAI()->PushCommand_UseSkill( idSkill, idTarget, posTarget.m_fX, posTarget.m_fZ, fDir, guidTarget );
            if ( OR_FAILED( oResult ) )
            {
                pHuman->SendOperateResultMsg(oResult);
            }
        }
    }

    g_pLog->FastSaveLog( LOG_FILE_1, "CGCharUseSkillHandler: S:%d D:%d Skill:%d (%f,%f) DIR = %f", 
        pPacket->getObjID(), 
        pPacket->getTargetID(), 
        idSkill, 
        pPacket->getTargetPos().m_fX,
        pPacket->getTargetPos().m_fZ,
        fDir ) ;

    return PACKET_EXE_CONTINUE ;

__LEAVE_FUNCTION

    return PACKET_EXE_ERROR ;
}
VOID CActionItem_Skill::DoAction( VOID )
{
	// 获取将使用的技能
	const SCLIENT_SKILL* pSkill = GetSkillImpl();
	if( !pSkill )
		return;

	INT idUser = -1;
	CObject_PlayerMySelf *pMySelf = CObjectManager::GetMe()->GetMySelf();
	if( !pMySelf )
		return; 

	idUser = pMySelf->GetID();	
	
	// 自动打怪,连续施放的技能
	if (TRUE == pSkill->m_pDefine->m_bAutoRedo)
	{
		tActionItem* pItem = CGameInterface::GetMe()->Skill_GetActive();
		// 有激活技能
		if (pItem)
		{
			// 当前技能正在激活中
			if (pItem->GetID() == GetID())
			{
				// 此次操作为关闭操作
				CGameInterface::GetMe()->Skill_SetActive( CActionSystem::GetMe()->GetMyDefaultSkillAtion() );
				
				// 关闭自动打怪
				CAI_MySelf* pMySelfAI = (CAI_MySelf*)( pMySelf->CharacterLogic_GetAI() );
				if( pMySelfAI )
					pMySelfAI->m_bCurrSkill  = FALSE;			

				return;
			}
			else
			{
				// 选中状态
				AutoKeepOn();
			}
		}
		// 没有激活技能
		else
		{
			// 选中状态
			AutoKeepOn();
		}
	}
	// 单次施放的技能
	else
	{
		// 瞬发技能不会打断自动技能
		if (FALSE == pSkill->m_pDefine->m_nImmediately)
		{
			CAI_MySelf* pMySelfAI = (CAI_MySelf*)( pMySelf->CharacterLogic_GetAI() );
			if( pMySelfAI )
				pMySelfAI->m_bCurrSkill  = FALSE;
		}		
	}

	// 进行技能使用的条件判断
	// 是否学会、冷却时间、消耗
	{

		ORESULT oResult;
		// 是否已经学会
		oResult = pSkill->IsCanUse_Leaned();
		if( OR_FAILED( oResult ) )
		{
			CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
			return ;
		}

		// 检查冷却是否结束
		oResult = pSkill->IsCanUse_CheckCoolDown();
		if( OR_FAILED( oResult ) )
		{
			CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
			return ;
		}

		// 消耗检测
		oResult = pSkill->IsCanUse_CheckDeplete( idUser );
		if( OR_FAILED( oResult ) )
		{
			CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
			return ;
		}

	}


	//================
	// 根据鼠标选择操作类型
	switch( pSkill->m_pDefine->m_nSelectType )	// 此类型从表中读出
	{
	case SELECT_TYPE_NONE:	// 无需选择,直接施放(以自己为中心的范围自动攻击)
		{
			// id,位置,方向
			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), fVector2(pMySelf->GetPosition().x, pMySelf->GetPosition().z), pMySelf->GetFaceDir());

			// 恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;

	case SELECT_TYPE_CHARACTER:	// 选择角色
		{
			// 有无选择主目标
			if( CObjectManager::GetMe()->GetMainTarget() )
			{
				// id,目标id
				CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), CObjectManager::GetMe()->GetMainTarget()->GetServerID());
			}
			else
			{
				// 无选择目标提示信息
				CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( OR_NO_TARGET ) );
			}

			// 恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;

	case SELECT_TYPE_POS:	// 以鼠标的位置为中心的范围攻击
		{
			// id,
			//CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), fVector2(pMySelf->GetPosition().x, pMySelf->GetPosition().z), pMySelf->GetFaceDir());

			// 恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(this);
		}
		break;

	case SELECT_TYPE_DIR:	// 方向(扇形)

		// 人物的方向技能使用
		//CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), fVector2(pMySelf->GetPosition().x, pMySelf->GetPosition().z), pMySelf->GetFaceDir());

		CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		break;

	case SELECT_TYPE_SELF:	// 对自己进行操作	
		{
			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), CObjectManager::GetMe()->GetMySelf()->GetServerID());
			// 恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;

	case SELECT_TYPE_HUMAN_GUID:	// 其他玩家
		{
			// 当前是否已经选择了一个队友
			GUID_t guid;
			CObjectManager::GetMe()->GetMainTarget(guid);
			if(guid == (GUID_t)-1)
			{
				// 尚未选择合法的对象
				STRING strTemp = NOCOLORMSGFUNC("GMDP_Struct_Skill_Info_Invalidate_Target");
				CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, strTemp.c_str());
				return;
			}

			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), (GUID_t)guid);
			// 恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;
	}
}
VOID CActionItem_Skill::DoAction(VOID)
{
	const SCLIENT_SKILL* pSkill = GetSkillImpl();
	if(!pSkill) return;

	ORESULT oResult;
	// 
	oResult = pSkill->IsCanUse_Leaned();
	if ( OR_FAILED( oResult ) )
	{
		CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
		return ;
	}
	////检查冷却是否结束
	oResult = pSkill->IsCanUse_CheckCoolDown();
	if ( OR_FAILED( oResult ) )
	{
		CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
		return ;
	}

	// 消耗检测
	INT idUser;
	CObject_PlayerMySelf *pMySelf = CObjectManager::GetMe()->GetMySelf( );
	idUser = (pMySelf)?(pMySelf->GetID()):(INVALID_ID);

	oResult = pSkill->IsCanUse_CheckDeplete( idUser );
	if ( OR_FAILED( oResult ) )
	{
		CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( oResult ) );
		return ;
	}

	//如果是连续的那么就换为选中状态。
	AutoKeepOn();
	//根据操作类型
	switch(pSkill->m_pDefine->m_nSelectType)
	{
	case SELECT_TYPE_NONE:	
		{
			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID());
			//恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;
	case SELECT_TYPE_CHARACTER:	
		{
			if(CObjectManager::GetMe()->GetMainTarget())
			{

				CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), 
					CObjectManager::GetMe()->GetMainTarget()->GetServerID());
			}
			else
			{
				CGameProcedure::s_pEventSystem->PushEvent( GE_NEW_DEBUGMESSAGE, GetOResultText( OR_NO_TARGET ) );
			}
			//恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;
	case SELECT_TYPE_POS:
		CActionSystem::GetMe()->SetDefaultAction(this);
//		CGameProcedure::s_pGameInterface->Skill_SetActive(this);
		break;
	case SELECT_TYPE_DIR:
		CActionSystem::GetMe()->SetDefaultAction(this);
//		CGameProcedure::s_pGameInterface->Skill_SetActive(this);
		break;
	case SELECT_TYPE_SELF:		
		{
			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), 
				CObjectManager::GetMe()->GetMySelf()->GetServerID());
			//恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;
	case SELECT_TYPE_HUMAN_GUID:
		{
			//当前是否已经选择了一个队友
			GUID_t guid;
			CObjectManager::GetMe()->GetMainTarget(guid);
			if(guid == (GUID_t)-1)
			{
				//尚未选择合法的对象
				CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "无效目标");
				return;
			}

			CGameProcedure::s_pGameInterface->Player_UseSkill(GetID(), (GUID_t)guid);
			//恢复激活Action
			CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
		}
		break;
	}
}