NFGUID NFCHeroModule::ActiviteHero(const NFGUID & self, const string & strID) { NFGUID id = AddHero(self, strID); if (!id.IsNull()) { ActiviteHero(self, id); } return id; }
int KScene::LuaAddHero(Lua_State* L) { int nResult = 0; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwTemplateID = ERROR_ID; int nLevel = 0; int nSide = 0; int nAIType = 0; KHero* pHero = NULL; int nX = 0; int nY = 0; int nZ = 0; int nPos = -1; int nFaceDir = csdInvalid; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 4 || nTopIndex == 7 || nTopIndex == 8); dwTemplateID = (DWORD)Lua_ValueToNumber(L, 1); nLevel = (int)Lua_ValueToNumber(L, 2); nSide = (int)Lua_ValueToNumber(L, 3); nAIType = (int)Lua_ValueToNumber(L, 4); if (nTopIndex == 7 || nTopIndex == 8) { nX = (int)Lua_ValueToNumber(L, 5); nY = (int)Lua_ValueToNumber(L, 6); nZ = (int)Lua_ValueToNumber(L, 7); } if (nTopIndex == 8) nFaceDir = (int)Lua_ValueToNumber(L, 8); bRetCode = GetFreePos(nSide, nPos); KGLOG_PROCESS_ERROR(bRetCode); pHero = AddHero(dwTemplateID, nLevel, nSide, nPos, nFaceDir); KGLOG_PROCESS_ERROR(pHero); pHero->SetPosition(nX, nY, nZ); if (nAIType != 0) pHero->m_AIData.nAIType = nAIType; pHero->m_bAiMode = true; pHero->SetUpAVM(); g_PlayerServer.DoBroadcastNewHero(pHero, ERROR_ID); nResult = pHero->LuaGetObj(L); Exit0: return nResult; }