//------------------------------------------------------------------------ // Constructor CScriptBind_MatchMaking::CScriptBind_MatchMaking( ISystem *pSystem ) : m_pSystem( pSystem ), m_pLobbyManager( NULL ) { Init( pSystem->GetIScriptSystem(), m_pSystem, 1 ); RegisterMethods(); RegisterGlobals(); }
/** * LoadBasicChunks */ void LoadBasicChunks(void) { byte *cptr; int numObjects; // Allocate RAM for savescene data InitialiseSaveScenes(); // CHUNK_TOTAL_ACTORS seems to be missing in the released version, hard coding a value // TODO: Would be nice to just change 511 to MAX_SAVED_ALIVES cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_TOTAL_ACTORS); RegisterActors((cptr != NULL) ? READ_LE_UINT32(cptr) : 511); // CHUNK_TOTAL_GLOBALS seems to be missing in some versions. // So if it is missing, set a reasonably high value for the number of globals. cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_TOTAL_GLOBALS); RegisterGlobals((cptr != NULL) ? READ_LE_UINT32(cptr) : 512); cptr = FindChunk(INV_OBJ_SCNHANDLE, CHUNK_TOTAL_OBJECTS); numObjects = (cptr != NULL) ? READ_LE_UINT32(cptr) : 0; cptr = FindChunk(INV_OBJ_SCNHANDLE, CHUNK_OBJECTS); #ifdef SCUMM_BIG_ENDIAN //convert to native endianness INV_OBJECT *io = (INV_OBJECT *)cptr; for (int i = 0; i < numObjects; i++, io++) { io->id = FROM_LE_32(io->id); io->hIconFilm = FROM_LE_32(io->hIconFilm); io->hScript = FROM_LE_32(io->hScript); io->attribute = FROM_LE_32(io->attribute); } #endif RegisterIcons(cptr, numObjects); cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_TOTAL_POLY); if (cptr != NULL) MaxPolygons(*cptr); if (TinselV2) { // Global processes cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_NUM_PROCESSES); assert(cptr && (*cptr < 100)); int num = *cptr; cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_PROCESSES); assert(!num || cptr); GlobalProcesses(num, cptr); // CdPlay() stuff cptr = FindChunk(MASTER_SCNHANDLE, CHUNK_CDPLAY_HANDLE); assert(cptr); uint32 playHandle = READ_LE_UINT32(cptr); assert(playHandle < 512); SetCdPlayHandle(playHandle); } }
//------------------------------------------------------------------------ CScriptBind_Weapon::CScriptBind_Weapon(ISystem *pSystem, IGameFramework *pGameFramework) : m_pSystem(pSystem), m_pSS(pSystem->GetIScriptSystem()), m_pGameFW(pGameFramework) { Init(m_pSS, 1); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ CScriptBind_Inventory::CScriptBind_Inventory(ISystem *pSystem, IGameFramework *pGameFramework) : m_pSystem(pSystem), m_pEntitySystem(gEnv->pEntitySystem), m_pGameFramework(pGameFramework) { Init(m_pSystem->GetIScriptSystem(), m_pSystem, 1); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ CScriptBind_Game::CScriptBind_Game(ISystem *pSystem, IGameFramework *pGameFramework) : m_pSystem(pSystem), m_pGameFW(pGameFramework) { Init(pSystem->GetIScriptSystem(), m_pSystem); SetGlobalName("Game"); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ CScriptBind_Network::CScriptBind_Network( ISystem *pSystem, CCryAction * pFW ) { m_pSystem = pSystem; m_pFW = pFW; Init( gEnv->pScriptSystem, m_pSystem ); SetGlobalName("Net"); RegisterGlobals(); RegisterMethods(); }
//------------------------------------------------------------------------ CScriptBind_HUD::CScriptBind_HUD(ISystem *pSystem, IGameFramework *pGameFramework) : m_pSystem(pSystem), m_pSS(pSystem->GetIScriptSystem()), m_pGameFW(pGameFramework) { Init(m_pSS, m_pSystem); SetGlobalName("HUD"); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ CScriptBind_Action::CScriptBind_Action(CCryAction *pCryAction) : m_pCryAction(pCryAction) { Init( gEnv->pScriptSystem, GetISystem() ); SetGlobalName("CryAction"); RegisterGlobals(); RegisterMethods(); m_pPreviousView=NULL; }
//------------------------------------------------------------------------ CScriptBind_ActorSystem::CScriptBind_ActorSystem( ISystem *pSystem, IGameFramework *pGameFW ) { m_pSystem = pSystem; //m_pActorSystem = pActorSystem; m_pGameFW = pGameFW; Init( pSystem->GetIScriptSystem(), m_pSystem ); SetGlobalName("Actor"); RegisterGlobals(); RegisterMethods(); }
//------------------------------------------------------------------------ CScriptBind_ItemSystem::CScriptBind_ItemSystem(ISystem *pSystem, CItemSystem *pItemSystem, IGameFramework *pGameFramework) : m_pItemSystem(pItemSystem), m_pGameFramework(pGameFramework) { Init(pSystem->GetIScriptSystem(), pSystem); SetGlobalName("ItemSystem"); RegisterGlobals(); RegisterMethods(); m_pEquipmentManager = static_cast<CEquipmentManager*>(pItemSystem->GetIEquipmentManager()); }
//------------------------------------------------------------------------ CScriptBind_Item::CScriptBind_Item(ISystem *pSystem, IGameFramework *pGameFramework) : m_pSystem(pSystem), m_pGameFW(pGameFramework) { Init(pSystem->GetIScriptSystem(), m_pSystem, 1); RegisterMethods(); RegisterGlobals(); m_stats.Create(m_pSystem->GetIScriptSystem()); m_params.Create(m_pSystem->GetIScriptSystem()); }
//------------------------------------------------------------------------ CScriptBind_GameAudio::CScriptBind_GameAudio(CGameAudio *pGameAudio) { m_pSystem = gEnv->pSystem; m_pSS = gEnv->pScriptSystem; m_pGameAudio = pGameAudio; Init(m_pSS); SetGlobalName("GameAudio"); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ CScriptBind_MaterialEffects::CScriptBind_MaterialEffects(ISystem *pSystem, CMaterialEffects* pMFX) { m_pSystem = pSystem; m_pMFX = pMFX; assert (m_pMFX != 0); Init( gEnv->pScriptSystem, m_pSystem ); SetGlobalName("MaterialEffects"); RegisterGlobals(); RegisterMethods(); }
CScriptEngine::CScriptEngine() : pstrStore(NULL), pstrScript(NULL), t(OP_END), m_nVars(0), m_nObjects(0), m_nStackLevel(0) { ::CoInitialize(NULL); RegisterGlobals(this); Clear(); Cancel(); }
CScriptBind_PortalManager::CScriptBind_PortalManager(ISystem *pSystem) { assert(pSystem); m_pSystem = pSystem; m_pSS = pSystem->GetIScriptSystem(); m_pPortalManager = NULL; // Initial init Init(m_pSS, m_pSystem); SetGlobalName("Portal"); RegisterMethods(); RegisterGlobals(); }
//------------------------------------------------------------------------ bool CScriptControlledPhysics::Init(IGameObject *pGameObject) { CScriptableBase::Init(gEnv->pScriptSystem, gEnv->pSystem, 1); SetGameObject(pGameObject); pGameObject->EnablePhysicsEvent(true, eEPE_OnPostStepLogged); RegisterGlobals(); RegisterMethods(); SmartScriptTable thisTable(gEnv->pScriptSystem); thisTable->SetValue("__this", ScriptHandle(GetEntityId())); thisTable->Delegate(GetMethodsTable()); GetEntity()->GetScriptTable()->SetValue("scp", thisTable); return true; }
void Eluna::StartEluna(bool restart) { if (restart) { sHookMgr->OnEngineRestart(); TC_LOG_INFO(LOG_FILTER_GENERAL, "Eluna::Restarting Lua Engine"); if (LuaState) { // Unregisters and stops all timed events LuaEventMap::ScriptEventsResetAll(); LuaEventData::RemoveAll(); // Remove bindings for (std::map<int, std::vector<int> >::iterator itr = ServerEventBindings.begin(); itr != ServerEventBindings.end(); ++itr) { for (std::vector<int>::const_iterator it = itr->second.begin(); it != itr->second.end(); ++it) luaL_unref(LuaState, LUA_REGISTRYINDEX, (*it)); itr->second.clear(); } CreatureEventBindings->Clear(); CreatureGossipBindings->Clear(); GameObjectEventBindings->Clear(); GameObjectGossipBindings->Clear(); ItemEventBindings->Clear(); ItemGossipBindings->Clear(); playerGossipBindings->Clear(); lua_close(LuaState); } } else AddScriptHooks(); LuaState = luaL_newstate(); TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Eluna Lua Engine loaded."); LoadedScripts loadedScripts; LoadDirectory("scripts", &loadedScripts); luaL_openlibs(LuaState); //Register Globals Here RegisterGlobals(LuaState); //Register Templates Here ElunaTemplate<Unit>::Register(LuaState); ElunaTemplate<GameObject>::Register(LuaState); ElunaTemplate<Group>::Register(LuaState); ElunaTemplate<Guild>::Register(LuaState); ElunaTemplate<QueryResult>::Register(LuaState); ElunaTemplate<Aura>::Register(LuaState); ElunaTemplate<WorldPacket>::Register(LuaState); ElunaTemplate<Item>::Register(LuaState); ElunaTemplate<Spell>::Register(LuaState); ElunaTemplate<Quest>::Register(LuaState); ElunaTemplate<Map>::Register(LuaState); ElunaTemplate<Corpse>::Register(LuaState); uint32 count = 0; char filename[200]; for (std::set<std::string>::const_iterator itr = loadedScripts.luaFiles.begin(); itr != loadedScripts.luaFiles.end(); ++itr) { strcpy(filename, itr->c_str()); if (luaL_loadfile(LuaState, filename) != 0) { TC_LOG_ERROR(LOG_FILTER_SERVER_LOADING, "Eluna::Error loading `%s`.", itr->c_str()); report(LuaState); } else { int err = lua_pcall(LuaState, 0, 0, 0); if (err != 0 && err == LUA_ERRRUN) { TC_LOG_ERROR(LOG_FILTER_SERVER_LOADING, "Eluna::Error loading `%s`.", itr->c_str()); report(LuaState); } } ++count; } if (restart) { //! Iterate over every supported source type (creature and gameobject) //! Not entirely sure how this will affect units in non-loaded grids. { TRINITY_READ_GUARD(HashMapHolder<Creature>::LockType, *HashMapHolder<Creature>::GetLock()); HashMapHolder<Creature>::MapType const& m = ObjectAccessor::GetCreatures(); for (HashMapHolder<Creature>::MapType::const_iterator iter = m.begin(); iter != m.end(); ++iter) if (iter->second->IsInWorld()) // must check? // if(sEluna->CreatureEventBindings->GetBindMap(iter->second->GetEntry())) // update all AI or just Eluna? iter->second->AIM_Initialize(); } } TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Eluna::Loaded %u Lua scripts..", count); }