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); // } } }
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); }