Advertisement
Guest User

Untitled

a guest
Nov 18th, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. function overwrite_meta_function(tbl, func_name, new_func)
  2. local old_func_name = "_" .. func_name
  3. local meta_table = getmetatable(tbl)
  4.  
  5. if not meta_table[func_name] then
  6. log(string.format("[ERROR] Function with name '%s' could not be found in the meta table!", func_name))
  7. return
  8. end
  9.  
  10. meta_table[old_func_name] = meta_table[old_func_name] or meta_table[func_name]
  11.  
  12. meta_table[func_name] = new_func
  13. end
  14.  
  15. local ids_unit = Idstring("unit")
  16.  
  17. overwrite_meta_function(World, "spawn_unit", function(self, unit_name, ...)
  18. if unit_name and Global.added_units[tostring(unit_name:key())] then
  19. if not managers.dyn_resource:has_resource(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE) then
  20. managers.dyn_resource:load(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE)
  21. while not managers.dyn_resource:is_resource_ready(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE) do end
  22. end
  23. end
  24. return self:_spawn_unit(unit_name, ...)
  25. end)
  26.  
  27. overwrite_meta_function(PackageManager, "unit_data", function(self, unit_name, ...)
  28. if Global.added_units[tostring(unit_name:key())] then
  29. if not managers.dyn_resource:has_resource(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE) then
  30. managers.dyn_resource:load(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE)
  31. while not managers.dyn_resource:is_resource_ready(ids_unit, unit_name, managers.dyn_resource.DYN_RESOURCES_PACKAGE) do end
  32. end
  33. end
  34. return self:_unit_data(unit_name, ...)
  35. end)
  36.  
  37. overwrite_meta_function(PackageManager, "script_data", function(self, ext, path, name_mt)
  38. local data = {}
  39.  
  40. if DB:_has(ext, path) then
  41. if name_mt ~= nil then
  42. data = self:_script_data(ext, path, name_mt)
  43. else
  44. data = self:_script_data(ext, path)
  45. end
  46. end
  47.  
  48. return BeardLib:ProcessScriptData(self, path, ext, data)
  49. end)
  50.  
  51. overwrite_meta_function(DB, "has", function(self, ext, path)
  52. if BeardLib._replace_script_data[ext:key()] and BeardLib._replace_script_data[ext:key()][path:key()] and #BeardLib._replace_script_data[ext:key()][path:key()] > 0 then
  53. return true
  54. end
  55.  
  56. return self:_has(ext, path)
  57. end)
  58.  
  59. overwrite_meta_function(PackageManager, "load", function(self, pck, ...)
  60. if not pck then
  61. return true
  62. end
  63.  
  64. if BeardLib and BeardLib._custom_packages[pck:key()] then
  65. local cpck = BeardLib._custom_packages[pck:key()]
  66. if not cpck:loaded() then
  67. cpck:Load()
  68. end
  69. return true
  70. end
  71.  
  72. self:_load(pck, ...)
  73. end)
  74.  
  75. overwrite_meta_function(PackageManager, "unload", function(self, pck)
  76. if not pck then
  77. return
  78. end
  79.  
  80. if BeardLib and BeardLib._custom_packages[pck:key()] then
  81. local cpck = BeardLib._custom_packages[pck:key()]
  82. if cpck:loaded() then
  83. cpck:Unload()
  84. end
  85. return
  86. end
  87.  
  88. self:_unload(pck)
  89. end)
  90.  
  91. overwrite_meta_function(PackageManager, "loaded", function(self, pck)
  92. if not pck then
  93. return false
  94. end
  95.  
  96. if BeardLib and BeardLib._custom_packages[pck:key()] then
  97. return BeardLib._custom_packages[pck:key()]:loaded()
  98. end
  99.  
  100. return self:_loaded(pck)
  101. end)
  102.  
  103. overwrite_meta_function(PackageManager, "package_exists", function(self, pck)
  104. if not pck then
  105. return false
  106. end
  107.  
  108. if BeardLib and BeardLib._custom_packages[pck:key()] then
  109. return true
  110. end
  111.  
  112. return self:_package_exists(pck)
  113. end)
  114.  
  115. --[[function print(...)
  116. log(string.format(...))
  117. end]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement