//打开一个玩家的摊位
VOID CGameInterface::Stall_OpenStallSale(INT nObjId)
{
	CObject *pChar = (CObject*) CObjectManager::GetMe()->FindServerObject(nObjId);
	if(pChar)
	{
		//先判定距离是不是合法
		const fVector3 pMePos = CObjectManager::GetMe()->GetMySelf()->GetPosition();
		const fVector3 pOtherPos = (pChar)->GetPosition();

		FLOAT fDistance = 
			TDU_GetDist(fVector2(pMePos.x, pMePos.z),
						fVector2(pOtherPos.x, pOtherPos.z));

		AxTrace(0,0,"%f", fDistance);

		if( EXCHANGE_MAX_DISTANCE < fDistance )
		{
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE,"距离太远,不能打开这个摊位");
			return ;
		}

		//发送打开摊位的消息
		CGStallOpen OpenStallMsg;
		OpenStallMsg.SetObjID(nObjId);
		CNetManager::GetMe()->SendPacket(&OpenStallMsg);

		//同时发送请求StallMessage的消息
		//CGBBSApply BbsMsg;
		//BbsMsg.SetObjID(nObjId);
		//CNetManager::GetMe()->SendPacket(&BbsMsg);
	}

}
VOID CFakeObjectEntityManager::Debug_SetFakeCamera(int nType, float fValue)
{
	FakeObjectMap::iterator it = m_mapObject.find("My_Pet");
	if(it == m_mapObject.end()) return;

	FakeObject& obj = it->second;

	Ogre::Camera* pCam = it->second.pCamera;

#if 1
	switch(nType)
	{
	case 2:
		{

			obj.fCameraHeight += fValue;
			_UpdateCamera(obj);

			AxTrace(0, 0, "Height:%f", obj.fCameraHeight);
		}
		break;

	case 3:
		{
			obj.fCameraDistance += fValue;
			_UpdateCamera(obj);

			AxTrace(0, 0, "Distance:%f", obj.fCameraDistance);
		}
		break;
	case 4:
		{
			obj.fCameraPitch += fValue;
			_UpdateCamera(obj);

			AxTrace(0, 0, "Pitch:%f", obj.fCameraPitch);
		}
		break;
	default:
		return;
	}
#endif
}
	//提交商品价格(同时要提交物品,和修改价格使用不同的)
	INT StallSale::ReferItemPrice(LuaPlus::LuaState* state)
	{
		LuaPlus::LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			TDThrow("LUA:StallSale::ReferItemPrice param parameter error");
		}

        UINT nMoney = static_cast<UINT>(args[2].GetInteger());

		//商品定价不能为0
		if(nMoney==0)
		{
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "上架失败,上架商品价格不能为零");
			return 0;
		}
		
		if(nMoney<=1000000000)
		{//小于10w金才能上架
			// 发送消息告诉服务器
			_ITEM_GUID Guid;
			tObject_Item::ITEM_GUID temp;
			temp.m_idUnion = 0;

			CGStallAddItem msg;
			msg.SetFromType(STALL_MSG::POS_BAG);

			tObject_Item* pItem = CDataPool::GetMe()->MyStallBox_GetCurSelectItem();
			if(pItem == NULL)
				return 0;

			//验证是否可以交易
			if(!pItem->Rule(tObject_Item::RULE_EXCHANGE))
			{
				CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, pItem->RuleFailMessage(tObject_Item::RULE_EXCHANGE).c_str());
				return 0;
			}

			pItem->GetGUID(temp.m_idOrg.m_idWorld, temp.m_idOrg.m_idServer, temp.m_idOrg.m_uSerial);
			AxTrace(0, 0, "ReferItemPrice:: pItem %s, GUID=%u", pItem->GetName(), pItem->GetGUID());
			Guid.m_World	= (BYTE)temp.m_idOrg.m_idWorld;
			Guid.m_Server	= (BYTE)temp.m_idOrg.m_idServer;	
			Guid.m_Serial	= (INT)temp.m_idOrg.m_uSerial;

			msg.SetObjGUID(Guid);
			msg.SetPrice(nMoney);

			CNetManager::GetMe()->SendPacket(&msg);
		}
		else
		{
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "摆摊时不得进行超过10万金以上的交易");
		}
		return 0;
	}
示例#4
0
uint GCDetailEquipListHandler::Execute(GCDetailEquipList* pPacket, Player* pPlayer )
{
	__ENTER_FUNCTION
	AxTrace(0, 2, "GCMyEquipListHandler::Execute");
	if(CGameProcedure::GetActiveProcedure() == (CGameProcedure*)CGameProcedure::s_pProcMain)
	{

	}
	return PACKET_EXE_CONTINUE ;

	__LEAVE_FUNCTION

	return PACKET_EXE_ERROR ;
}
示例#5
0
// 设置装备
VOID CModelShowInUI::SetUIModelInfo(HUMAN_EQUIP point, INT nID)
{
	if( m_pAvatar )
	{
		// 主武器
		if( HEQUIP_MAINHAND == point )
		{
			char buf[512];
			memset(buf, 0, sizeof(buf));
			sprintf(buf, "主武器id = %d", nID);
			AxTrace(0, 0, buf);
		}
		// 副武器
		if( HEQUIP_ASSIHAND == point )
		{
			char buf[512];
			memset(buf, 0, sizeof(buf));
			sprintf(buf, "副武器id = %d", nID);
			AxTrace(0, 0, buf);
		}

		m_pAvatar->GetCharacterData()->Set_Equip( point, nID );
	}
}
uint GCEnvPlayerListHandler::Execute( GCEnvPlayerList* pPacket, Player* pPlayer )
{
	AxTrace(0, 2, "GCEnvPlayerListHandler::Execute");

	//当前流程是主流程
	if(CGameProcedure::GetActiveProcedure() == (CGameProcedure*)CGameProcedure::s_pProcMain)
	{
		//接受周围环境玩家列表
		int nPlayerCount = pPacket->GetCount();
		for(int i=0; i<nPlayerCount; i++)
		{
			const PLAYER_S& newPlayer = (pPacket->GetPlayerList())[i];
			
			//通过ObjManager创建其他玩家
			TDObject_PlayerOther* pNewPlayer = (TDObject_PlayerOther*)TDObjectManager::GetMe()->NewObject(_T("TDObject_PlayerOther"), _T("TDObject_PlayerOther"));
			pNewPlayer->Build(newPlayer);
			pNewPlayer->Initial();
		}
	}
	return PACKET_EXE_CONTINUE ;
}
示例#7
0
// 激活当前鼠标上挂接的命令
VOID CCursorMng::MouseCommand_Active(SCommand_Mouse& cmd)
{
    CGameProcedure::s_pGameInterface->SetAutoPathNPC(-1,"");
    switch(cmd.m_typeMouse)
    {
    case SCommand_Mouse::MCT_PLAYER_MOVETO:
    {
        static UINT uPrevMoveTime = 0;
        if(CGameProcedure::s_pTimeSystem->GetTimeNow() > uPrevMoveTime + 100)
        {
            uPrevMoveTime = CGameProcedure::s_pTimeSystem->GetTimeNow();
            CGameProcedure::s_pGameInterface->Player_MoveTo( fVector2( cmd.m_afParam[0], cmd.m_afParam[1] ) );
        }
    }
    break;

    case SCommand_Mouse::MCT_PLAYER_SELECT:
    {
        //
        CGameProcedure::s_pGameInterface->Object_SelectAsMainTarget((INT)cmd.m_adwParam[0], 1);

        if(	m_cmdCurrent_Left.m_typeMouse == SCommand_Mouse::MCT_SKILL_DIR ||
                m_cmdCurrent_Left.m_typeMouse == SCommand_Mouse::MCT_SKILL_AREA)
        {
            m_cmdCurrent_Left.m_typeMouse = SCommand_Mouse::MCT_NULL;
            m_cmdCurrent_Left.m_apParam[0] = NULL;
            m_cmdCurrent_Left.m_afParam[1] = NULL;

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

    // 对单一对象使用技能
    case SCommand_Mouse::MCT_SKILL_OBJ:
    {
        // 首先选择目标
        CGameProcedure::s_pGameInterface->Object_SelectAsMainTarget((INT)cmd.m_adwParam[1], 2);

        tActionItem* pItem = (tActionItem*)cmd.m_apParam[0];
        if( !pItem )
            break;

        // 宠物攻击
        //if( pItem->GetType() == AOT_PET_SKILL )
        //{
        //	int nPetSkillID = ((PET_SKILL*)(((CActionItem_PetSkill*)pItem)->GetImpl()))->m_pDefine->m_nID;
        //	CDataPool::GetMe()->Pet_SendUseSkillMessage(nPetSkillID, INVALID_ID, cmd.m_afParam[1], cmd.m_afParam[2]);
        //}
        //// 玩家攻击
        //else
        {
            CGameProcedure::s_pGameInterface->Player_UseSkill(((tActionItem*)cmd.m_apParam[0])->GetID(), (INT)cmd.m_adwParam[1]);
        }
    }
    break;

    // 对某个范围使用技能
    case SCommand_Mouse::MCT_SKILL_AREA:
    {
        tActionItem* pItem = (tActionItem*)cmd.m_apParam[0];
        if( !pItem )
            break;

        if( pItem->GetType() == AOT_PET_SKILL )
        {
            int nPetSkillID = ((PET_SKILL*)(((CActionItem_PetSkill*)pItem)->GetImpl()))->m_pDefine->m_nID;
            CDataPool::GetMe()->Pet_SendUseSkillMessage(nPetSkillID, INVALID_ID, cmd.m_afParam[1], cmd.m_afParam[2]);
        }
        else
        {
            CGameProcedure::s_pGameInterface->Player_UseSkill(((tActionItem*)cmd.m_apParam[0])->GetID(), fVector2(cmd.m_afParam[1], cmd.m_afParam[2]));
        }

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

    // 对某个方向使用技能(扇形攻击)
    case SCommand_Mouse::MCT_SKILL_DIR:
    {
        tActionItem* pItem = (tActionItem*)cmd.m_apParam[0];
        if(!pItem)
            break;

        // 忽略宠物的技能使用

        // 人物的方向技能使用
        CGameProcedure::s_pGameInterface->Player_UseSkill(((tActionItem*)cmd.m_apParam[0])->GetID(), cmd.m_afParam[1]);

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

    // 掉落包之类的
    case SCommand_Mouse::MCT_HIT_TRIPPEROBJ:
    {
        CGameProcedure::s_pGameInterface->TripperObj_Active(cmd.m_adwParam[0]);
    }
    break;

    // NPC对话
    case SCommand_Mouse::MCT_SPEAK:
    {
        // 首先选择目标
        CGameProcedure::s_pGameInterface->Object_SelectAsMainTarget((INT)cmd.m_adwParam[0], 3);

        // 谈话
        CGameProcedure::s_pGameInterface->Player_Speak(cmd.m_adwParam[0]);
    }
    break;

    // 右键关联菜单
    case SCommand_Mouse::MCT_CONTEXMENU:
    {
        // 首先选择
        CGameProcedure::s_pGameInterface->Object_SelectAsMainTarget((INT)cmd.m_adwParam[0], 0);

        // 显示右键菜单
        CGameProcedure::s_pGameInterface->Object_ShowContexMenu(cmd.m_adwParam[0]);
    }
    break;

    case SCommand_Mouse::MCT_REPAIR:
    {
        //do nothing...
    }
    break;

    case SCommand_Mouse::MCT_CANCLE_REPAIR:
    {
        // 取消修理
        CActionSystem::GetMe()->SetDefaultAction(CGameInterface::GetMe()->Skill_GetActive());
    }
    break;


    case SCommand_Mouse::MCT_UI_USE_IDENTIFY:
    {
        // 使用鉴定卷轴

        break;
    }
    case SCommand_Mouse::MCT_UI_USE_CANCEL_IDENTIFY:
    {
        // 取消使用鉴定卷轴
        CDataPool::GetMe()->Identify_UnLock();
        break;
    }

    case SCommand_Mouse::MCT_USE_ITEM:
    {
        // 使用物品
        CGameProcedure::s_pGameInterface->PacketItem_UserItem((	tActionItem*)cmd.m_apParam[0],
                cmd.m_adwParam[1], fVector2(cmd.m_afParam[2], cmd.m_afParam[3]));

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

    case SCommand_Mouse::MCT_CANCEL_USE_ITEM:
    {
        // 恢复激活Action
        CActionSystem::GetMe()->SetDefaultAction(CGameProcedure::s_pGameInterface->Skill_GetActive());
    }
    break;
    /*case SCommand_Mouse::MCT_PLAYER_JUMP:
    	{
    		CObjectManager::GetMe()->GetMySelf()->Jump();
    	}
    	break;*/

    default:
        AxTrace(0, 0, "Active: ERROR!(%d)", cmd.m_typeMouse);
        break;
    }
}