Пример #1
0
void AINutPlayer::RegisterFunctions() {
	// AI scripts should by default run when idle

	Sqrat::Class<NutPlayer> nutClass(vm, _SC("Core"), true);
	Sqrat::RootTable(vm).Bind(_SC("Core"), nutClass);
	RegisterCoreFunctions(this, &nutClass);
	Sqrat::DerivedClass<InstanceScript::AbstractInstanceNutPlayer, NutPlayer> abstractInstanceClass(vm, _SC("AbstractInstance"));
	Sqrat::DerivedClass<InstanceScript::InstanceNutPlayer, AbstractInstanceNutPlayer> instanceClass(vm, _SC("Instance"));
	Sqrat::DerivedClass<AINutPlayer, InstanceScript::InstanceNutPlayer> aiClass(vm, _SC("AI"));
	Sqrat::RootTable(vm).Bind(_SC("AI"), aiClass);
	RegisterAIFunctions(this, &aiClass);
	Sqrat::RootTable(vm).SetInstance(_SC("ai"), this);

	if(attachedCreature != NULL && attachedCreature->actInst != NULL) {
//		InstanceScript::InstanceNutPlayer *player = &attachedCreature->actInst->nutScriptPlayer;
//		if(player->active) {
//			Sqrat::RootTable rt = Sqrat::RootTable(player->vm);
//			Sqrat::DerivedClass<InstanceScript::InstanceNutPlayer, NutPlayer> instanceClass(vm, _SC("Instance"));
//			player->RegisterInstanceFunctions(player, &instanceClass);
////			Sqrat::RootTable(vm).SetInstance(_SC("inst"), player);
//			Sqrat::RootTable(vm).Bind(_SC("inst"), rt);
//		}
	}

}
Пример #2
0
void LuaEngine::LoadScripts()
{
    LUALoadScripts rtn;
    Log.Notice("LuaEngine", "Scanning Script-Directories...");
    ScriptLoadDir(((char*)sWorld.LuaScriptPath.c_str()), &rtn);

    unsigned int cnt_uncomp = 0;
    luaL_openlibs(L);
    RegisterCoreFunctions();
    Log.Notice("LuaEngine", "Loading Scripts...");

    char filename[200];

    for(set<string>::iterator itr = rtn.luaFiles.begin(); itr != rtn.luaFiles.end(); ++itr)
    {
        strcpy(filename, itr->c_str());
        if(luaL_loadfile(L, filename) != 0)
        {
            Log.Error("LuaEngine", "loading %s failed.(could not load)", itr->c_str());
            report(L);
            continue;
        }
        else
        {
            if(lua_pcall(L, 0, 0, 0) != 0)
            {
                Log.Error("LuaEngine", "%s failed.(could not run)", itr->c_str());
                report(L);
                continue;
            }
        }
        cnt_uncomp++;
    }
    Log.Notice("LuaEngine","Loaded %u Lua scripts.", cnt_uncomp);
}