The scripted was designed to give the user a choice of what functions they wanted to perform in one control panel so to speak. Not much different than downloading 100 lua scripts and then running them one by one as you desired.
The problem that can arise when running many scripts at one time is they can conflict with each other.
My intention was to create a script that even if you checked every single box in every tab it would play nice together without conflict. Easy.lua only initiates actions based upon you the user selecting a check box.
Easy.lua does not have the ability to predict what other plugins, macros or lua scripts you have running and therefore may cause unintended conflicts.
If you get any errors or conflicts within Easy.lua feel free to post them and I can address the issues to the best of my ability.
If you could send me the error you get with the name crash I can look into it. The name with upper and lower case characters? Is this on a test or live server?
I think a solution here would be to de-conflict the two resources in a way that leaves the features in place, but where it disables them intelligently. For example, if you were to check to see if a specific class had their class plugin loaded (A Shadow Knight running MQ2Eskay for example) , you could disable the conflicting features preventing the two things from fighting over who's going to do what when. With that change the restriction could be lifted because the conflict is self solving.
One way would be to try the following. Pardon my lack of
Lua knowledge as I don't know what you can and cannot do in
Lua, so I'd ask you interpret the information and convert for the language you are using.
Code:
bool IsClassPluginLoaded() {
switch (${Me.Class.ID}) {
case 1://Warrior
return !${Plugin[MQ2War].IsLoaded};
break;
case 2://Cleric
return !${Plugin[MQ2Cleric].IsLoaded};
break;
case 3://Paladin
return !${Plugin[MQ2Paladin].IsLoaded};
break;
case 4://Ranger
return !${Plugin[MQ2Ranger].IsLoaded};
break;
case 5://Shadow Knight
return !${Plugin[MQ2Eskay].IsLoaded};
break;
case 6://Druid
return !${Plugin[MQ2Druid].IsLoaded};
break;
case 7://Monk
return !${Plugin[MQ2Monk].IsLoaded};
break;
case 8://Bard
return !${Plugin[MQ2Bard].IsLoaded};
break;
case 9://Rogue
return !${Plugin[MQ2Rogue].IsLoaded};
break;
case 10://Shaman
return !${Plugin[MQ2Shaman].IsLoaded};
break;
case 11://Necromancer
return !${Plugin[MQ2Necro].IsLoaded};
break;
case 12://Wizard
return !${Plugin[MQ2Wizard].IsLoaded};
break;
case 13://Magician
return !${Plugin[MQ2Mage].IsLoaded};
break;
case 14://Enchanter
return !${Plugin[MQ2Enchanter].IsLoaded};
break;
case 15://Beastlord
return !${Plugin[MQ2Bst].IsLoaded};
break;
case 16://Berserker
return !${Plugin[MQ2Berzerker].IsLoaded};
break;
}
}
This is one example, If switches aren't available you could do something similar by pushing everything in a vector or array in order of the class IDs and then doing a single
return !${Plugin[${ClassPluginList[${Me.Class.ID}]}].IsLoaded}
I realize macros don't play out exactly like shown here but felt this was easiest way I could communicate the thoughts to you in a way we both understood.
So then you'd use the function to determine if the plugin was loaded and if so disable the conflicting features. This would allow the features that don't conflict to continue to operate and be available to the player without causing any conflicting behavior solving the issue.
Again, it's not our intention to remove stuff without consideration for the impact it could have on players, but we do choose to disable things that conflict to avoid unexpected behavior either through the users lack of knowledge or otherwise. Going a collaborative route where only the conflicting features are disabled would allow it to be temporary (soon as the plugin is unloaded it would free up those behaviors in your
Lua) and allow both tools to be in use at the same time.
I also just kinda slapped this together off the top of my head and there would still ofc be worked needed by yourself in order to get this to play nice with the plugin, so ultimately up to you if you want to add any additional effort. Unfortunately we're not able to disable specific features of the
Lua, so for now we've opted to use the option available to us.
I really like Easy. I use it for the dispenser action, force feed, Dannet, everything zone information. I wonder if the major objection is about the burn functions, Class tab, (combat?). I wouldn't mind a version of Easy without the Class tab. Account, Zone, Clickies, Hunter, and Fav tab seem to be clean? In options tab, I would think maybe begging and bind wound could cause a conflict but unlikely. Camp tab is clean. The merc tab may be in conflict. Maybe a checklist of items could be agreed upon?
Vote with your feet. Of my 16 toons only 3 don't use the CMTN/Sic plugins. I like my wiz though. Great job guys.
By the way, I continue to crash Easy when I select account tab on some of my toons. The only difference is the one with a username of 10 characters works fine and the one with 15 crashes (the name is a random combination of upper and lower case characters).
Basically anything that moves, clicks, memorizes, casts, uses a clicky, ability, discipline, skill, removes buffs, targets etc. Any of the passive features that don't require action be taken by the character should be non-conflicting.
You reference clickies, the plugin does clickies, but because you are using the plugin for automation the plugin will use the clickies without conflicting with itself.
If you have two things trying to do two different things (or even the same thing with different end results) then it's conflicting behavior.
So if the plugin is trying to cast a buff on itself and memorizes a spell and then easy memorizes a spell then the plugin wants to fix the memorization that's incorrect...
The plugin wants to pull and easy would like to cast a clicky...
The plugin wants to burn one way and easy wants to burn a different way.
The plugin wants to travel and easy wants to collect a shiny.
etc as some examples.
An alternative to all this if you would like to use easy would be to unload the plugin. If the plugin isn't loaded, it won't conflict with easy, and then easy can do whatever it is you want easy to do.