// 连接到login server
	INT CGameProduce_Login::ConnectToLoginServer(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		if (!(args[3].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}


		int nAreaIndex		  = args[2].GetInteger();
		int nLoginServerIndex = args[3].GetInteger();

		if(CGameProcedure::s_pProcLogIn)
		{
			
			CGameProcedure::s_pProcLogIn->ConnectToLoginServer(nAreaIndex, nLoginServerIndex);
		
		}
		return 0;
	}
	// 验证用户名和密码
	INT CGameProduce_Login::CheckAccount(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsString()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		if (!(args[3].IsString()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}


		const char* pUserName = args[2].GetString();
		const char* pPassword = args[3].GetString();

		if(CGameProcedure::s_pProcLogIn)
		{
			
			CGameProcedure::s_pProcLogIn->CheckAccount((CHAR*)pUserName, (CHAR*)pPassword);
		
		}
		return 0;
	}
Exemplo n.º 3
0
	// 得到宠物的名字
	INT	Pet::GetName(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetName parameter error");
			return 0;
		}
		INT nPetNum = args[2].GetInteger();		
		
		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet GetName parameter error");
			return 0;
		}
		state->PushString( My_Pet->m_szName.c_str());

		return 1;

		//DBC_DEFINEHANDLE(s_pMonsterAttr, DBC_CREATURE_ATT);
		//const _DBC_CREATURE_ATT* pPet = (const _DBC_CREATURE_ATT*)s_pMonsterAttr->Search_Index_EQU(My_Pet->m_nDataID);
		//if(pPet)
		//{
		//	state->PushString(pPet->pName);
		//}
		//else
		//{
		//	state->PushString("未知宠");
		//}
		//return 2;
	}
Exemplo n.º 4
0
	//获得宠物当前的经验 和 升级所需要的经验
	INT	Pet::GetExp(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetExp parameter error");
			return 0;
		}
		INT nPetNum = args[2].GetInteger();		
		
		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet GetExp parameter error");
			return 0;
		}

		DBC_DEFINEHANDLE(s_pPetLevelup, DBC_PET_LEVELUP);
		const _DBC_PET_LEVELUP* pPetExp = (const _DBC_PET_LEVELUP*)s_pPetLevelup->Search_Index_EQU(My_Pet->m_nLevel);

		state->PushNumber( My_Pet->m_nExp);

		if(pPetExp)
		{
			state->PushInteger(pPetExp->nExp);
		}
		else
		{
			state->PushInteger(INVALID_ID);
		}
		return 2;
	}
Exemplo n.º 5
0
	//获得宠物的ID
	INT	Pet::GetID(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetID parameter error");
			return 0;
		}
		INT nPetNum = args[2].GetInteger();		
		
		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet GetID parameter error");
			return 0;
		}
		CHAR str[32];
		_snprintf(str, 32, "%.8X",My_Pet->m_GUID.m_uHighSection);

		state->PushString(str);
//		state->PushNumber(My_Pet->m_GUID.m_uHighSection);

		_snprintf(str, 32, "%.8X",My_Pet->m_GUID.m_uLowSection);
		state->PushString(str);
//		state->PushNumber(My_Pet->m_GUID.m_uLowSection);

		INT sex = My_Pet->m_GUID.m_uLowSection % 2;
		state->PushInteger(sex);		

		return 3;
	}
	// 设置脸形模型id
	INT CGameProduce_Login::SetHairModelId(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		if (!(args[3].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		// 头像索引
		int iRace  = args[2].GetInteger();
		int iIndex = args[3].GetInteger();

		if((CGameProcedure::s_pProcCharCreate)&&(CGameProcedure::s_pProcCharCreate->m_iIsLoadFaceModel))
		{
			CGameProcedure::s_pProcCharCreate->SetHairModelByRaceAndIndex(iRace, iIndex);
		}

		return 0;
	}
Exemplo n.º 7
0
	////得到宠物是否存在
	INT Pet::IsPresent(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet IsPresent parameter error");
			return 0;
		}
		INT nPetNum = args[2].GetInteger();		
		
		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) )
		{
			KLThrow("LUA:Pet IsPresent parameter error");
			return 0;
		}

		if(this == &s_Pet)
		{
			if( (!My_Pet->m_GUID.IsNull()) && (My_Pet->m_pModelData ))
			{
				state->PushInteger(1);
			}
			else
			{
				state->PushInteger(0);
			}
		}
		else
			KLThrow("Not a valid obj");

		return 1;
	}
Exemplo n.º 8
0
	//宠物是否处于参战状态
	INT	Pet::GetIsFighting(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetIsFighting parameter error");
			return 0;
		}
		INT nPetNum = args[2].GetInteger();		
		
		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet GetIsFighting parameter error");
			return 0;
		}
		if( CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_CurrentPetGUID() == My_Pet->m_GUID )
		{
			state->PushInteger(1);
		}
		else
		{
			state->PushInteger(0);
		}

		return 1;
	}
Exemplo n.º 9
0
	//获得宠物的第N个技能的ID
	INT Pet::GetSkillID(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetSkillID parameter1 error");
			return 0;
		}
		if (!(args[3].IsInteger()) ) 
		{
			KLThrow("LUA:Pet GetSkillID parameter2 error");
			return 0;
		}

		INT nPetNum = args[2].GetInteger();		
		INT nSkillNum = args[3].GetInteger();

		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet GetSkillID parameter error");
			return 0;
		}

		state->PushInteger(My_Pet->m_Skill[nSkillNum].m_pDefine->m_nID );

		return 1;
	}
Exemplo n.º 10
0
//关心与某逻辑Obj的距离(用于商人或者任务窗口,当距离超过一定距离后自动关闭)
INT CUIWindowItem::LUA_CareObject(LuaPlus::LuaState* pState)
{
	LuaStack args(pState);
	if(!(args[2].IsInteger()))
	{
		KLThrow("LUA: CUIWindowItem::LUA_CareObject[2] Wrong Param1");
	}
	if(!(args[3].IsInteger())) 
	{
		KLThrow("LUA: CUIWindowItem::LUA_CareObject[3] Wrong Param1");
	} 
	if(!(args[4].IsString()))
	{
		KLThrow("LUA: CUIWindowItem::LUA_CareObject[4] Wrong Param1");
	}

	// Object的ID
	INT nObjID = args[2].GetInteger();

	// 是否关心
	INT	bCare = args[3].GetInteger()==1;

	// 谁在关心
	std::string str = args[4].GetString();

	g_pObjectSystem->CareObject(nObjID, bCare, str);

	return 0;
}
Exemplo n.º 11
0
	//宠物休息
	INT	Pet::Go_Relax(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if ( !args[2].IsInteger() )
		{
			KLThrow("LUA:Pet Go_Relax parameter error");
		}

		INT nPetNum = args[2].GetInteger();

		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet Go_Relax parameter error");
			return 0;
		}
		//向服务器发送
		CGManipulatePet Msg;

		Msg.SetGUID(My_Pet->m_GUID);
		Msg.SetManipulateType(MANIPULATE_DELETEPET);
		CNetManager::GetMe()->SendPacket(&Msg);
		return 0;
	}
Exemplo n.º 12
0
	//宠物参战
	INT	Pet::Go_Fight(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if ( !args[2].IsInteger() )
		{
			KLThrow("LUA:Pet Go_Fight parameter error");
		}

		INT nPetNum = args[2].GetInteger();

		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet Go_Fight parameter error");
			return 0;
		}
		// 如果自己正在摆摊,不能出战
		if(TRUE == CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_IsInStall())
		{
			STRING strTemp = "";
			strTemp = NOCOLORMSGFUNC("GMAI_Base_Info_You_Stalling");
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, strTemp.c_str());
			//CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE,"你正在摆摊……");
			return 0;
		}
		//向服务器发送
		CGManipulatePet Msg;

		Msg.SetGUID(My_Pet->m_GUID);
		Msg.SetManipulateType( MANIPULATE_CREATEPET );
		CNetManager::GetMe()->SendPacket(&Msg);
		return 0;
	}
Exemplo n.º 13
0
INT CVariableSystem::Lua_SetGlobalVariable(LuaPlus::LuaState* state)	//设置全局变量
{
	LuaPlus::LuaStack args(state);
	if(!args[2].IsString()) 
	{
		KLThrow("LUA:CVariableSystem::Lua_SetGlobalVariable[2] param parameter error");
		return 0;
	}
	if(!args[3].IsString()) 
	{
		KLThrow("LUA:CVariableSystem::Lua_SetGlobalVariable[3] param parameter error");
		return 0;
	}
	if(!args[4].IsInteger())
	{
		KLThrow("LUA:CVariableSystem::Lua_SetGlobalVariable[4] param parameter error");
		return 0;
	}

	// 如果没有设置触发事件参数		20100714 BLL
	if ( !args[5].IsInteger() )
	{
		CVariableSystem::GetMe()->SetVariable(args[2].GetString(), args[3].GetString(), args[4].GetInteger());
	}
	else
	{
		CVariableSystem::GetMe()->SetVariable(args[2].GetString(), args[3].GetString(), args[4].GetInteger(), args[5].GetInteger());
	}

	return 0;
}
	/* ------------------------------------------------
	// 放生
	参数1	GUID m_uHighSection
	参数2	GUID m_uLowSection
	------------------------------------------------ */
	INT Mount::FreeMount(LuaPlus::LuaState* state)
	{
		LuaStack args(state);
		if (!(args[2].IsString()))
		{
			KLThrow("Mount::FreeMount[2] param parameter error");
		}
		STRING szHighSection = args[2].GetString();

		if (!(args[3].IsString()))
		{
			KLThrow("Mount::FreeMount[3] param parameter error");
		}
		STRING szLowSection = args[3].GetString();

		PET_GUID_t GUID;
		GUID.m_uHighSection = atol(szHighSection.c_str());
		GUID.m_uLowSection	= atol(szLowSection.c_str());

		const SDATA_PET* pPet = CDataPool::GetMe()->Pet_GetPet(GUID); 
		if (pPet && FALSE == pPet->m_GUID.IsNull())
		{
			//向服务器发送
			CGManipulatePet Msg;

			Msg.SetGUID(pPet->m_GUID);
			Msg.SetManipulateType( MANIPULATE_FREEHORSE );
			CNetManager::GetMe()->SendPacket(&Msg);
		}

		return 0;
	}
Exemplo n.º 15
0
// 计算从开始点到结束点的路径 2006-4-17
BOOL CPath::CreateMovePath(const fVector2& fvCurrent, const fVector2& fvTarget)
{      
	KLU_Log("Begin CreateMovePath : %f,%f,%f,%f", fvCurrent.x, fvCurrent.y,
		fvTarget.x, fvTarget.y);

	m_vPosStack.clear();

	CScene* pActiveScene = (CScene*)CWorldManager::GetMe()->GetActiveScene();

	if( pActiveScene == NULL ) 
		return FALSE;

	if( FALSE == pActiveScene->IsValidPosition(fvCurrent) )
		KLThrow("CPath::CreateMovePath() current position is invalid : %f,%f", fvCurrent.x, fvCurrent.y);

	if( FALSE == pActiveScene->IsValidPosition(fvTarget) )
		KLThrow("CPath::CreateMovePath() target position is invalid : %f,%f", fvTarget.x, fvTarget.y);

	bool find = pActiveScene->mPathFinder->findPath(fvCurrent.x, fvCurrent.y, fvTarget.x, fvTarget.y);

	int pathCount = 0;

	if (find)
	{   
		size_t count = pActiveScene->mPathFinder->getNumPathPoints();

		pathCount = static_cast<int>(count);

		KLU_Log("CreateMovePath : %f,%f,%f,%f,%d,%s", fvCurrent.x, fvCurrent.y,
			fvTarget.x, fvTarget.y, pathCount, find ? "find" : "not find");

		if (count > 16)
		{
			KLU_Log("CreateMovePath : %f,%f,%f,%f,%d,path unit > 16", fvCurrent.x, fvCurrent.y,
				fvTarget.x, fvTarget.y, pathCount);
		}

		for (size_t i=0; i<count-1; ++i)
		{
			const PathLib::ResultPoint& point1 = pActiveScene->mPathFinder->getResultPoint(i);
			const PathLib::ResultPoint& point2 = pActiveScene->mPathFinder->getResultPoint(i+1);

			PathUnit pathUnit;

			pathUnit.fvStart.x = point1.x;
			pathUnit.fvStart.y = point1.y;

			pathUnit.fvTarget.x = point2.x;
			pathUnit.fvTarget.y = point2.y;
			m_vPosStack.push_back(pathUnit);
		}

	}

	return find;
}
	/* ------------------------------------------------
	// 使用物品
	参数1	ActionItemID
	参数2	MountIndex
	------------------------------------------------ */
	INT	Mount::UseMountItem(LuaPlus::LuaState* state)
	{
		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("Mount::UseMountItem[2] param parameter error");
		}
		INT nActionItemID = args[2].GetInteger();

		if (!(args[3].IsInteger()))
		{
			KLThrow("Mount::UseMountItem[3] param parameter error");
		}
		INT nMountIndex = args[3].GetInteger();

		// 骑宠有效
		SDATA_PET* pPet = CDataPool::GetMe()->Pet_GetPet(nMountIndex);
		if (NULL == pPet)
			return 0;
		
		// 物品有效
		if (-1 == nActionItemID)
			return 0;
		tActionItem* pAction = CActionSystem::GetMe()->GetAction(nActionItemID);
		if (NULL == pAction)
			return 0;
		if (AOT_ITEM != pAction->GetType())
			return 0;

		CActionItem_Item* pActionItem = (CActionItem_Item*)pAction;
		
		// 是坐骑物品
		tObject_Item *pObj = pActionItem->GetItemImpl();
		if(pObj && pObj->GetItemClass() == ICLASS_COMITEM)
		{
			CObject_Item_Medicine* pMedicine_Item = (CObject_Item_Medicine*)pObj;
			if (pMedicine_Item->GetItemTableType() == COMMON_HORSE_ITEM)
			{
				// 发送物品使用消息
				CGManipulatePet Msg;

				Msg.SetGUID( pPet->m_GUID );
				Msg.SetItemID( pMedicine_Item->GetIdTable() );
				Msg.SetTypeData( pMedicine_Item->GetNumber() );
				Msg.SetManipulateType( MANIPULATE_HORSE_ITEM );
				Msg.SetBagIndex(pMedicine_Item->GetPosIndex());

				CNetManager::GetMe()->SendPacket(&Msg);
			}
		}

		return 0;
	}
Exemplo n.º 17
0
	//宠物改名字
	INT	Pet::Change_Name(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if ( !(args[2].IsInteger()) || !(args[3].IsString()) )
		{
			KLThrow("LUA:Pet Change_Name parameter error");
		}

		INT nPetNum = args[2].GetInteger();
		LPCTSTR szName = args[3].GetString();
		STRING szTemp="";

		SDATA_PET* My_Pet= CDataPool::GetMe()->Pet_GetPet(nPetNum);
		if( (!My_Pet) || ( !My_Pet->m_pModelData ) ) 
		{
			KLThrow("LUA:Pet Change_Name parameter error");
			return 0;
		}
		if(CGameProcedure::s_pUISystem->CheckStringFilter(szName, FT_NAME) == FALSE)
		{
			
			STRING strTemp = "";
			strTemp = NOCOLORMSGFUNC("GMGameInterface_Script_Talk_Info_InvalidContent");
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE,strTemp.c_str());
			return 0;

		}
		else if(CGameProcedure::s_pUISystem->CheckStringCode(szName,szTemp) == FALSE)
		{

			return 0;

		}
		else if(KLU_CheckStringValid(szName) == FALSE)
		{
			STRING strTemp = "";
			strTemp = NOCOLORMSGFUNC("ERRORSpecialString");
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE,strTemp.c_str());
			return 0;
		}
		//向服务器发送
		CGSetPetAttrib Msg;
		if(strcmp(szName, My_Pet->m_szName.c_str()) != 0)
		{
			Msg.SetGUID(My_Pet->m_GUID);
//			Msg.SetIndex(nPetNum);		
			Msg.SetName((CHAR*)szName);
			CNetManager::GetMe()->SendPacket(&Msg);
		}
		return 0;
	}
	/* ------------------------------------------------
	// 查询 骑宠技能
	参数1	INT		骑宠标示
	参数2	INT		技能下标
	------------------------------------------------ */
	INT Mount::GetMountSkill(LuaPlus::LuaState* state)
	{
		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("Mount::GetMountSkill[2] param parameter error");
		}
		INT nMountIndex = args[2].GetInteger();		

		if (!(args[3].IsInteger()))
		{
			KLThrow("Mount::GetMountSkill[3] param parameter error");
		}
		INT nSkillIndex = args[3].GetInteger();
		if (nSkillIndex < 0 || nSkillIndex >= PET_MAX_SKILL_COUNT)
		{
			KLThrow("GetModelSkill(), nSkillIndex 越界!");
			nSkillIndex = 0;
		}

		const SDATA_PET* pPetData = CDataPool::GetMe()->Pet_GetPet(nMountIndex);
		if (pPetData)
		{
			const PET_SKILL& skill = pPetData->m_Skill[nSkillIndex];
			state->PushInteger(skill.m_bCanUse);
			
			if (skill.m_pDefine)
			{
				tActionItem* pSkillAction = CActionSystem::GetMe()->GetAction_PetSkillID(pPetData->m_GUID, skill.m_pDefine->m_nID);
				if (pSkillAction)
				{
					state->PushInteger(pSkillAction->GetID());
				}
				else
				{
					state->PushInteger(-1);
				}
			}
			else
			{
				state->PushInteger(-1);
			}
		}
		else
		{
			state->PushInteger(FALSE);
			state->PushInteger(-1);
		}

		return 2;
	}
	/* ------------------------------------------------
	// 加点确认
	参数1	INT		骑宠下标
	参数2	INT		力量
	参数3	INT		敏捷
	参数4	INT		体力
	参数5	INT		智力
	------------------------------------------------ */
	INT Mount::SetAttrAddRequest(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()))		
			KLThrow("Mount::SetAttrAddRequest[2] param parameter error");
		
		INT nMountIndex = args[2].GetInteger();

		if (!(args[3].IsInteger()))
			KLThrow("Mount::SetAttrAddRequest[3] param parameter error");
		
		INT nStrAdd = args[3].GetInteger();
		

		if (!(args[4].IsInteger()))		
			KLThrow("Mount::SetAttrAddRequest[4] param parameter error");
		
		INT nDexAdd = args[4].GetInteger();
		

		if (!(args[5].IsInteger()))		
			KLThrow("Mount::SetAttrAddRequest[5] param parameter error");
		
		INT nConAdd = args[5].GetInteger();
		

		if (!(args[6].IsInteger()))		
			KLThrow("Mount::SetAttrAddRequest[6] param parameter error");

		INT nIntAdd = args[6].GetInteger();

		// 发送加点消息		
		const SDATA_PET* pPet = CDataPool::GetMe()->Pet_GetPet(nMountIndex);
		if (pPet && FALSE == pPet->m_GUID.IsNull())
		{
			CGSetPetAttrib Msg;

			Msg.SetGUID(pPet->m_GUID);
			Msg.SetStrIncrement(nStrAdd);
			Msg.SetDexIncrement(nDexAdd);
			Msg.SetConIncrement(nConAdd);
			Msg.SetIntIncrement(nIntAdd);

			CNetManager::GetMe()->SendPacket(&Msg);
		}
		

		return 0;
	}
	/* ------------------------------------------------
	// 申请改变坐骑的名字
	参数1	MountIndex
	参数2	MountName
	------------------------------------------------ */
	INT Mount::ChangeMountName(LuaPlus::LuaState* state)
	{
		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("Mount::ChangeMountName[2] param parameter error");
		}
		INT nMountIndex = args[2].GetInteger();

		if (!(args[3].IsString()))
		{
			KLThrow("Mount::ChangeMountName[3] param parameter error");
		}
		STRING szNickName = args[3].GetString();

		INT nNum = strlen(szNickName.c_str());
		// 
		if (nNum <= 0)
		{
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "名字不能为空");
			return 0;
		}

		// 名字最大长度
		if (nNum >= MAX_NICK_NAME-1)
		{
			CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "名字字数过长");
			return 0;
		}

		SDATA_PET* pPet = CDataPool::GetMe()->Pet_GetPet(nMountIndex);
		if (pPet && FALSE == pPet->m_GUID.IsNull())
		{
			// 和当前名不一样
			if (0 != strcmp(szNickName.c_str(), pPet->m_szNickname.c_str()))
			{
				// 发送改名消息
				CGManipulatePet Msg;

				Msg.SetGUID( pPet->m_GUID );
				Msg.SetNickName(szNickName.c_str());
				Msg.SetManipulateType( MANIPULATE_HORSE_NICKNAME );

				CNetManager::GetMe()->SendPacket(&Msg);
			}			
		}

		return 0;
	}
	/* ------------------------------------------------
	// 发送确认或取消交配消息
	参数1	MountIndex
	参数2	nOK			确认或取消
	参数3	nNpcSeverID
	------------------------------------------------ */
	INT Mount::RequestMating(LuaPlus::LuaState* state)
	{
		LuaStack args(state);		

		if (!(args[2].IsInteger()))
		{
			KLThrow("Mount::RequestMyMountMatingLocked[2] param parameter error");
		}
		INT nMountIndex = args[2].GetInteger();

		if (!(args[3].IsInteger()))
		{
			KLThrow("Mount::RequestMating[3] param parameter error");
		}
		INT nOK = args[3].GetInteger();

		if (!(args[4].IsInteger()))
		{
			KLThrow("Mount::RequestMating[4] param parameter error");
		}
		INT nNpcSeverID = args[4].GetInteger();

		if (TRUE == nOK)
		{
			// 发送确认消息
			SDATA_PET* pPet = CDataPool::GetMe()->Pet_GetPet(nMountIndex);
			if (pPet && FALSE == pPet->m_GUID.IsNull())
			{
				CGManipulatePet Msg;

				Msg.SetGUID( pPet->m_GUID );
				Msg.SetCharObjID(nNpcSeverID);
				Msg.SetManipulateType( MANIPULATE_HORSE_MATING_CONFIRM );

				CNetManager::GetMe()->SendPacket(&Msg);
			}				
		}
		else
		{
			// 发送取消消息
			CGManipulatePet Msg;

			Msg.SetManipulateType( MANIPULATE_HORSE_MATING_CANCEL );

			CNetManager::GetMe()->SendPacket(&Msg);
		}		

		return 0;
	}
Exemplo n.º 22
0
BOOL CSoundBufferFMod::ReadWavBuffer(const STRING &name)
{
	Release();

	char* lpAddress = NULL;
	DWORD dwSize = CGameProcedure::s_pResourceProvider->loadResource(name.c_str(), lpAddress, "General");
	if(dwSize > 0)
	{
		m_pFModSample = FSOUND_Sample_Load(FSOUND_FREE, 
				lpAddress, 
				FSOUND_HW3D | FSOUND_LOADMEMORY, 0, dwSize);
		CGameProcedure::s_pResourceProvider->unloadResource( lpAddress, dwSize );
	}
	
	if(!m_pFModSample) 
	{
		KLThrow("Invalid sound file:%s", name.c_str());
		return FALSE;
	}

	//缺省所有声音都是不循环的
    FSOUND_Sample_SetMode(m_pFModSample, FSOUND_LOOP_OFF);

	return TRUE;
}
	// 20100421 AddCodeBegin
	// 得到技能名称
	INT SkillStudy::GetSkillName(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		if (!(args[2].IsInteger()))
		{
			KLThrow("PlayerShop::EnumItem[2] param parameter error");
		}

		INT nSkillID = args[2].GetInteger();

		DBC_DEFINEHANDLE(s_pSkillDBC, DBC_SKILL_DATA);
		const _DBC_SKILL_DATA* pSkillData = (const _DBC_SKILL_DATA*)s_pSkillDBC->Search_Index_EQU(nSkillID);
		if (pSkillData)
		{
			if ( pSkillData->m_lpszName != NULL )
			{
				state->PushString( pSkillData->m_lpszName );
				return 1;
			}		
		}

		state->PushString("");
		return 1;
	}
	// 得到男主角头像的名称
	INT CGameProduce_Login::GetManFaceName(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		// 头像索引
		int iIndex = args[2].GetInteger();
		LPCSTR pImageName = NULL;
		if((CGameProcedure::s_pProcCharCreate)&&(CGameProcedure::s_pProcCharCreate->m_iIsLoadFace))
		{
			LPCSTR pImageName = CGameProcedure::s_pProcCharCreate->m_FaceMng.GetFaceImageInfo(1, iIndex);
		}

		if(pImageName)
		{
			// 名字
			state->PushString(pImageName);
		}
		else
		{
			// 名字
			state->PushString("");
		}

		return 1;
	}
	//得到区域服务器的名字.
	INT CGameProduce_Login::GetAreaName(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		int nAreaIndex = args[2].GetInteger();

		PAREA_INFO pAreaInfo = NULL;
		if(CGameProcedure::s_pProcLogIn)
		{
			pAreaInfo = CGameProcedure::s_pProcLogIn->GetAreaInfo(nAreaIndex);
		}
		if (pAreaInfo)
		{
			state->PushString(pAreaInfo->szAreaName);
			state->PushInteger(pAreaInfo->iProvide);
		}
		else
		{
			state->PushString("");
			state->PushInteger(-1);
		}
		
		return 2;
	}
	// 发送进入游戏消息
	INT CGameProduce_Login::ChangeSceneMsg(LuaPlus::LuaState* state)
	{
		
		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		if(CGameProcedure::s_pProcEnter)
		{
			INT iSceneId = args[2].GetInteger();
			if( CGameProcedure::s_pProcEnter->GetSceneID() == iSceneId )
			{
				CEventSystem::GetMe()->PushEvent(GE_NEW_DEBUGMESSAGE, "你已经在该地图!");
				return 0;
			}

			CGMapInfo msg;
			//msg.SetType( ASK_CHANGE_SCENE );
			msg.SetIndex( iSceneId );
			CNetManager::GetMe()->SendPacket( &msg );
			CGameProcedure::s_pEventSystem->PushEvent( GE_TOGLE_CLOSELARGEMAP );
		}

		return 0;
	}
	// 得到角色的ui模型名字
	INT CGameProduce_Login::GetRoleUIModleName(LuaPlus::LuaState* state)
	{
		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		int iRoleIndex = args[2].GetInteger();
		
		const TCHAR* pUIModleName = NULL;
		if(CGameProcedure::s_pProcCharSel)
		{
			pUIModleName = CGameProcedure::s_pProcCharSel->GetRoleUIName(iRoleIndex);
		}//	
		
		if(pUIModleName)
		{
			// 名字
			state->PushString(pUIModleName);
		}
		else
		{
			// 名字
			state->PushString("");
		}

		return 1;
	}
	INT MissionReply::EnumItem(LuaPlus::LuaState* state)
	{
		LuaStack args(state);

		//检查参数
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA: MissionReply::EnumItem Wrong Param2");
		}
		INT nIndex = args[2].GetInteger();
		if(nIndex>=0 && nIndex<=3)
		{
			tActionItem* pActionItem = CActionSystem::GetMe()->EnumAction(nIndex, NAMETYPE_MISSIONREFER);
			if(pActionItem)
			{
				LuaObject objReturn = state->BoxPointer(pActionItem);
				objReturn.SetMetaTable(*CActionItem::s_pMetaTable);
				objReturn.PushStack();

				return 1;
			}
		}
		//非法ActionItem
		LuaObject objReturn = state->BoxPointer(&(CActionItem::s_InvalidAction));
		objReturn.SetMetaTable(*CActionItem::s_pMetaTable);
		objReturn.PushStack();

		return 1;
	}
	//得到区域服务器的信息
	INT CGameProduce_Login::GetAreaServerInfo(LuaPlus::LuaState* state)
	{

		LuaStack args(state);
		if (!(args[2].IsInteger()))
		{
			KLThrow("LUA:GetBuffIconNameByIndex param parameter error");
		}

		int nAreaIndex = args[2].GetInteger();

		std::string strInfoName = "";
		int iAreaProvide		= 0;
		if(CGameProcedure::s_pProcLogIn)
		{
			PAREA_INFO pInfo = CGameProcedure::s_pProcLogIn->GetAreaInfo(nAreaIndex);
			if(pInfo)
			{
				strInfoName  = pInfo->szAreaName;
				iAreaProvide = pInfo->iProvide;
			}
		}
	
		state->PushString(strInfoName.c_str());
		state->PushInteger(iAreaProvide);
		return 2;
	}
Exemplo n.º 30
0
// 渲染OGRE场景
VOID CEngineInterface::RenderFrame(VOID)
{
	if(!Ogre::Root::getSingletonPtr())
	{
		KLThrow("Ogre::Root = 0");
	}

	const UINT MAX_RENDER_INTER_TIME = 2000;

	static UINT s_nLastRenderTime = 0;
	UINT s_nTimeNow = g_pTimeSystem->GetTimeNow();

	if(g_pTimeSystem->CalSubTime(s_nLastRenderTime, s_nTimeNow) > MAX_RENDER_INTER_TIME)
	{
		Ogre::Root::getSingleton().clearEventTimes();
		s_nLastRenderTime = s_nTimeNow;
		
		return;
	}

	s_nLastRenderTime = s_nTimeNow;

	//重置小地图探灯
	if(m_pMapLight)
	{
		m_pMapLight->Update();
	}
	
	Ogre::Root::getSingleton().renderOneFrame();
}