qboolean G_LuaInit() { int i, num_vm = 0; char buff[128]; int numdirs; int numFiles; char filename[128]; char dirlist[1024]; char *dirptr; int dirlen; G_Printf("------- G_LuaInit -------\n"); numFiles = 0; trap_Cvar_VariableStringBuffer("mapname", buff, sizeof(buff)); sprintf(filename, "scripts/lua/%s/", buff); numdirs = trap_FS_GetFileList(filename, ".lua", dirlist, 1024); dirptr = dirlist; for(i = 0; i < numdirs; i++, dirptr += dirlen + 1) { dirlen = strlen(dirptr); strcpy(filename, "scripts/lua/"); strcat(filename, buff); strcat(filename, "/"); strcat(filename, dirptr); numFiles++; if(LoadLuaFile(filename, num_vm)) { num_vm++; G_Printf(" %s Loaded\n", filename); } else { G_Printf(" %s Failed\n", filename); } if(num_vm >= NUM_VMS) { LUA_LOG("Lua: too many lua files specified, only the first %d have been loaded\n", NUM_VMS); G_Printf(S_COLOR_YELLOW "Lua: too many lua files specified, only the first %d have been loaded\n", NUM_VMS); break; } } Com_Printf("%i map files parsed\n", numFiles); G_Printf("------- G_LuaInit Finish -------\n"); return qtrue; }
/** G_LuaInit() * Initialises the Lua API interface */ qboolean G_LuaInit() { //load from cvar int i, len, num_vm = 0; char buff[MAX_CVAR_VALUE_STRING], *crt; //load from files int numdirs; int numFiles; char filename[128]; char dirlist[1024]; char *dirptr; int dirlen; G_Printf("------- G_LuaInit -------\n"); if(lua_modules.string[0]) { //Load lua modules from the cvar Q_strncpyz(buff, lua_modules.string, sizeof(buff)); len = strlen(buff); crt = buff; for(i = 0; i < LUA_NUM_VM; i++) lVM[i] = NULL; for(i = 0; i <= len; i++) { if(buff[i] == ' ' || buff[i] == '\0' || buff[i] == ',' || buff[i] == ';') { buff[i] = '\0'; if(LoadLuaFile(crt, num_vm, VMT_GAMESCRIPT)) { num_vm++; G_Printf(" %s Loaded\n", crt); } else { G_Printf(" %s Failed\n", crt); } // prepare for next iteration if(i + 1 < len) crt = buff + i + 1; else crt = NULL; if(num_vm >= LUA_NUM_VM) { LOG("Lua API: too many lua files specified, only the first %d have been loaded\n", LUA_NUM_VM); break; } } } } //Load lua modules in global folder numFiles = 0; numdirs = trap_FS_GetFileList("scripts/lua/global/", ".lua", dirlist, 1024); dirptr = dirlist; for(i = 0; i < numdirs; i++, dirptr += dirlen + 1) { dirlen = strlen(dirptr); strcpy(filename, "scripts/lua/global/"); strcat(filename, dirptr); numFiles++; // load the file //G_LoadLuaScript(NULL, filename); if(LoadLuaFile(filename, num_vm, VMT_GAMESCRIPT)) { num_vm++; G_Printf(" %s Loaded\n", filename); } else { G_Printf(" %s Failed\n", filename); } if(num_vm >= LUA_NUM_VM) { LOG("Lua API: too many lua files specified, only the first %d have been loaded\n", LUA_NUM_VM); break; } } Com_Printf("%i global files parsed\n", numFiles); //* numFiles = 0; trap_Cvar_VariableStringBuffer("mapname", buff, sizeof(buff)); sprintf(filename, "scripts/lua/%s/", buff); numdirs = trap_FS_GetFileList(filename, ".lua", dirlist, 1024); dirptr = dirlist; for(i = 0; i < numdirs; i++, dirptr += dirlen + 1) { dirlen = strlen(dirptr); strcpy(filename, "scripts/lua/"); strcat(filename, buff); strcat(filename, "/"); strcat(filename, dirptr); numFiles++; // load the file //G_LoadLuaScript(NULL, filename); if(LoadLuaFile(filename, num_vm, VMT_MAPSCRIPT)) { num_vm++; G_Printf(" %s Loaded\n", filename); } else { G_Printf(" %s Failed\n", filename); } if(num_vm >= LUA_NUM_VM) { LOG("Lua API: too many lua files specified, only the first %d have been loaded\n", LUA_NUM_VM); break; } } Com_Printf("%i map files parsed\n", numFiles); //*/ G_Printf("------- G_LuaInit Finish -------\n"); return qtrue; }