plugin_configs.sp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * Sourcemod 1.7 Plugin Template
  3. */
  4. #pragma semicolon 1
  5. #include <sourcemod>
  6. #pragma newdecls required
  7. #define PLUGIN_VERSION "0.0.1"
  8. public Plugin myinfo = {
  9. name = "[ANY] Plugin Configs",
  10. author = "nosoop",
  11. description = "For those of us that are too lazy to recompile plugins with AutoExecConfig.",
  12. version = PLUGIN_VERSION,
  13. url = "https://github.com/nosoop/"
  14. }
  15. #define CONFIG_DIRECTORY "cfg/sourcemod/pluginconfigs"
  16. ArrayList g_PluginNames;
  17. public void OnPluginStart() {
  18. g_PluginNames = new ArrayList(PLATFORM_MAX_PATH);
  19. ReloadPluginConfigList();
  20. }
  21. public void OnAutoConfigsBuffered() {
  22. char fileName[PLATFORM_MAX_PATH];
  23. for (int i = 0; i < g_PluginNames.Length; i++) {
  24. g_PluginNames.GetString(i, fileName, sizeof(fileName));
  25. Handle plugin = FindPluginByFile(fileName);
  26. if (plugin != INVALID_HANDLE && GetPluginStatus(plugin) == Plugin_Running) {
  27. char filePath[PLATFORM_MAX_PATH];
  28. strcopy(filePath, sizeof(filePath), CONFIG_DIRECTORY);
  29. StrCat(filePath, sizeof(filePath), fileName);
  30. // ExecuteConfig() ...
  31. }
  32. }
  33. }
  34. void ReloadPluginConfigList() {
  35. g_PluginNames.Clear();
  36. if (!DirExists(CONFIG_DIRECTORY, false)) {
  37. CreateDirectory(CONFIG_DIRECTORY,
  38. FPERM_U_READ + FPERM_U_WRITE + FPERM_U_EXEC + FPERM_G_READ + FPERM_G_EXEC +
  39. FPERM_O_READ + FPERM_O_EXEC);
  40. }
  41. DirectoryListing configDirectory = OpenDirectory("cfg/sourcemod/pluginconfigs", false);
  42. char buffer[PLATFORM_MAX_PATH];
  43. FileType fileType;
  44. while (configDirectory.GetNext(buffer, sizeof(buffer), fileType)) {
  45. if (fileType == FileType_File) {
  46. g_PluginNames.PushString(buffer);
  47. // TODO make sure this is basename
  48. }
  49. }
  50. delete configDirectory;
  51. }