//打开一个玩家的摊位 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; }
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 ; }
// 设置装备 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 ; }
// 激活当前鼠标上挂接的命令 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; } }