// 连接到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; }
// 得到宠物的名字 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; }
//获得宠物当前的经验 和 升级所需要的经验 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; }
//获得宠物的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; }
////得到宠物是否存在 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; }
//宠物是否处于参战状态 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; }
//获得宠物的第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; }
//关心与某逻辑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; }
//宠物休息 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; }
//宠物参战 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; }
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; }
// 计算从开始点到结束点的路径 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; }
//宠物改名字 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; }
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; }
// 渲染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(); }