Quick installation guide if you don't want / can't use git to fetch the project: (1) Download project directory as ZIP, (2) extract it to lotro plugins folder, and (3) rename MaKoPlugins-master directory to MaKoPlugins.
MaKoPlugins/release directory contains also two other ZIP files: Quickslot.zip contains somewhat reliable quickslot implementation, and Utils.zip contains my utilities for making plugins.
- - -
Then to actual subject(s).
[SOLVED] A Bad Idea - https://www.lotro.com/forums/showthr...09#post7457109: (1) In my utilities library - https://github.com/mkoskim/MaKoPlugi...Utils/Misc.lua - I changed the implementation to 'inject' features to plugin object itself. Previously I created proxy PlugIn object, but I thought this way the implementation would be clearer. Now, because plugin is not always in global table (_G), I have inserted method call self parameter as _G.plugin at various places: some of them are at the beginning, and the rest are in plugin.Unload() function. My question is, is this safe? Does the actual object live entire plugin execution time although it is not present in globals?
- - -
(2) Quickslots, shortcuts and Drag'n'Drop: for somewhat long time I have struggled with unpredictable behaviour of DnD with various plugins (e.g. TonicBars, BevyBars) using quickslots. I started to investigate this closer, as an attempt to fix the problems. Is there any good source for reliable implementation of quickslots, or maybe description of limitations? It seems that:
- Dragging items from built-in quickslots or bags seem to work about 99% of cases.
- Dragging skills seem to work less reliably
- Dragging aliases seem to work very unreliably: it is usually not possible to drag an alias from plugin quickslot to built-in slots, although it usually works on the other way. Many plugins seem to loose either side of the shortcut (either source or destination) when you are trying to swap them between build-in slots.
I have been studying BevyBars' quickslot implementation.
(1) In my utilities library - https://github.com/mkoskim/MaKoPlugi...Utils/Misc.lua - I changed the implementation to 'inject' features to plugin object itself. Previously I created proxy PlugIn object, but I thought this way the implementation would be clearer. Now, because plugin is not always in global table (_G), I have inserted method call self parameter as _G.plugin at various places: some of them are at the beginning, and the rest are in plugin.Unload() function. My question is, is this safe? Does the actual object live entire plugin execution time although it is not present in globals?
Yes, this is A Bad Idea (tm). Plugins seem to share same sandbox, so messing up with global namespace can cause lots of trouble. Changed my implementation for bit safer.