コード例 #1
0
//------------------------------------------------------------------------
// Constructor
CScriptBind_MatchMaking::CScriptBind_MatchMaking( ISystem *pSystem )
: m_pSystem( pSystem ),
	m_pLobbyManager( NULL )
{
	Init( pSystem->GetIScriptSystem(), m_pSystem, 1 );

	RegisterMethods();
	RegisterGlobals();
}
コード例 #2
0
ファイル: tinsel.cpp プロジェクト: havlenapetr/Scummvm
/**
 * 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);
	}
}
コード例 #3
0
//------------------------------------------------------------------------
CScriptBind_Weapon::CScriptBind_Weapon(ISystem *pSystem, IGameFramework *pGameFramework)
: m_pSystem(pSystem),
	m_pSS(pSystem->GetIScriptSystem()),
	m_pGameFW(pGameFramework)
{
	Init(m_pSS, 1);

	RegisterMethods();
	RegisterGlobals();
}
コード例 #4
0
//------------------------------------------------------------------------
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();
}
コード例 #5
0
//------------------------------------------------------------------------
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();
}
コード例 #7
0
ファイル: ScriptBind_HUD.cpp プロジェクト: RenEvo/dead6
//------------------------------------------------------------------------
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();
}
コード例 #8
0
//------------------------------------------------------------------------
CScriptBind_Action::CScriptBind_Action(CCryAction *pCryAction)
: m_pCryAction(pCryAction)
{
	Init( gEnv->pScriptSystem, GetISystem() );
	SetGlobalName("CryAction");

	RegisterGlobals();
	RegisterMethods();

	m_pPreviousView=NULL;
}
コード例 #9
0
//------------------------------------------------------------------------
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();
}
コード例 #10
0
//------------------------------------------------------------------------
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());
}
コード例 #11
0
ファイル: ScriptBind_Item.cpp プロジェクト: Xydrel/Infected
//------------------------------------------------------------------------
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());
}
コード例 #12
0
//------------------------------------------------------------------------
CScriptBind_GameAudio::CScriptBind_GameAudio(CGameAudio *pGameAudio)
{
    m_pSystem			= gEnv->pSystem;
    m_pSS					= gEnv->pScriptSystem;
    m_pGameAudio = pGameAudio;

    Init(m_pSS);
    SetGlobalName("GameAudio");

    RegisterMethods();
    RegisterGlobals();
}
コード例 #13
0
//------------------------------------------------------------------------
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();
}
コード例 #14
0
CScriptEngine::CScriptEngine() : 
   pstrStore(NULL), 
   pstrScript(NULL), 
   t(OP_END), 
   m_nVars(0), 
   m_nObjects(0),
   m_nStackLevel(0)
{
   ::CoInitialize(NULL);
   RegisterGlobals(this);
   Clear();
   Cancel();
}
コード例 #15
0
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();
}
コード例 #16
0
//------------------------------------------------------------------------
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;
}
コード例 #17
0
ファイル: LuaEngine.cpp プロジェクト: Enno92/TC-Eluna-3.3.5a
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);
}