GS-E Future Questions

This is now where near release ready. It needs a lot of optimisation work but the prototype has just been checked into Git. The details are all here: Localisation · Issue #10 · TimothyLuke/GSE-Advanced-Macro-Compiler · GitHub

So 1.1 should be ready to go on the weekend.

The highlight for this release is the macro translator. The translator itself will be an optional plugin but if it exists and you turn the use translator option on, it will translate any sequences that are not in your local clients language to that. For example if you play in esMX and someone gives you a pack that contains enUS sequences they will translate. While this works in prototype form there are a lot of performance things that need to be ironed out.

The other things that are coming that are feature complete are:

  1. Debug Mode - Tons of information on what the mod is doing when. This can be output to chat or captured in a global. The information in the Global can then be extracted into other mods or exported to be analyzed externally.
  2. some target hopping prevention - "Require Target to use". If you turn on this option it will add "/stopmacro [@playertarget, noexists]" to both the Pre and PostMacro

I do have some follow up questions.

The other thought is do I make the Require Target to use and “/target [noharm][nodead]” exclusive or make it a global as well?

I am also thinking of adding two more to “Use trinkets in Post Macro” and “Use Rings in Post Macro” to add the lines /use [combat]13 etc . (11 and 12 are rings, 13 and 14 or trinkets)

Why I’m thinking this is that /use [combat]13 and 14 seem to turn up a lot in macros and could be a personal preference thing.

I also have this list of things to fix

  1. Protection for people with close to 120 macros
  2. Sequence Icon problems. Still load create the macro if the icon is invalid for any reason

At this stage 1.2 will focus on Sequence Syntax and visual markup in the editor.

The translator is almost done. I loaded into a esMX client it auto translated my normal sequence files into Spanish. This is how the editor came out:

Editor defaulted to esMX as it was my local client language.

Macro translated in the editor from Spanish to English

That is pretty neat TimothyLuke, I know of some communities that will be extremely happy with the work in translations you have done.

Thank you again.

This just hit Curse and WowInterface. You will need GS-E 1.1 and the GS-E Translator which is a seperate download.

took a break for a few months so pardon me if this is a dumb question

  1. do we still need to rename the sequence file to lua?

2.) can you still write the sequences in notepad?

3.) does this still support the old gnome macro styles?

thank you all for the answers:)

glhf

Welcome Back.

  1. No. GS-E has a plugin system. You keep your sequences away from the mod so that you dont have to do as much manual stuff. There is a bunch of entry level sequences that comes with the mod and thgere is a “myMacros” plugin that has no sequences in it to use for your own stuff.

  2. THer is an ingame editor you can use to build the sequence but you still need to put this into “myMacros” via Noterpad++ or Atom.

  3. Yes. There are a few extra pieces of information you can provide that makes it a lot easier to use.

I would suggest starting there: https://wowlazymacros.com/forums/topic/how-to-gnomesequencer-enhanced/

The GS-E 101 video half way down has a ton of stuff on how to get going.

GS-E 1.1.3 released. Trying to fix things in multiple languages almost feels like a game of wack-a-mole.

I am about to release 1.1.5 of GS-E.

This contains a ton of fixes to the Translator and now caters for all game locales.

  • deDE
  • enGB
  • enUS
  • esES
  • esMX
  • frFR
  • itIT
  • koKR
  • plPL
  • ptBR
  • ruRU
  • zhTW
Instead of being 22Mb for 4 languages its also now 2Mb all languages. There is a tradeoff to this. I have a process that takes 4 hours to run that generates the languages and it obtains that information from Blizzards out of game API. There are currently 250,000 spells in that API. The initial release had a 85,000 spell subset. I have narrowed that down now to 2,000. When that 4 hour process works it just downloads those 2000 spells. There is the possibility that I have missed an ability. If you have the Translator installed and loaded in game (You dont have to have the GS-E option turned on to do this) you can run the following macro to tell what hasnt been translated from your macros. You can use this to identify spelling mistakes etc in Sequences. You will need to do a /console reloadui after this as it will translate every sequence loaded into spanish! ``` /run GSTRReportUnfoundSpells() /run GSDebugOutput = table.concat(GSTRUnfoundSpells,"\n") /gs showdebugoutput ```

The result of that macro will be a single line text box:

Click that text box and press CTRL+A then CTRL+C (Select all, Copy) and then into your text editor paste and you will get a result like:

Raise Dead
13
14
Horn of Winter
13
14
Incarnation: King of the Jungle
Mind Spike
Mind Spike
Exsanguinate
Crusade
13
14

The 13’s and 14’s are from trinket lines. But the other spells is telling you that either there are spelling mistakes in those spells or they are not in the master list. When you find one thats missing let me know so I can add it to the list.

Speaking if the 13’s and 14’s I have been asked for better control of when you use Trinket and Ring abilities. How many times have you seen this copy/pasted into a sequence?

PostMacro = [[
/use [combat]13
/use [combat]14
]],

There are now in the Global Options the abilities to turn on and off using Rings and Trinkets. All the DraikMacros now have the /use [combat] 13 lines removed. The mod will filter out any of these it sees left over in other macros.

This screen also lists every addon to GS-E that has been installed in the middle.

If you ever want to see whats actually on the button instead of the sequence:
/dump _G['SequenceName']:GetAttribute('PostMacro')

I have some final testing to do but this will go out in the next 24 hours if its all clear.

The suggestion I would make for GS-E is to make the editor a complete in-game editor

As such the editor would need to do the follow:

  • Auto populate existing macros into Character Macros, based on Class/Spec
  • Select existing macros
  • Create new macros, without the need of editing an existing macro
  • Update existing macros
  • Delete macros
  • Reset macros back to previous settings
  • - restore Update macros to previous state before Update
  • - restore Deleted macros

Also, related to GS-E and the GS-E editor, have the system so that the current Spell/Talent being cast is displayed as an Icon just like GS.

I know that some of these features are already in the editor, but the lack of all these features is what is holding me back from switching over to GS-E fully.

The only thing that stops me doing

  • Create new macros, without the need of editing an existing macro
  • Update existing macros
  • Delete macros
  • Reset macros back to previous settings

Is not being able to update the LUA files from within game.

Its a ton of race conditions trying to play withthe saved variables for this area. They load in before and after the sequences are set.

What i mean by a race condition is where two processes are running in parallel and you cant control which will run through first. The mod loads and then all the addin mods load and you dont know exactly how many there are. The main mod creates buttons and after it is finished it then loads in saved variables. What you dont know is which version of the macro you have. The one from your code or the one from saved variables.

This is handled the same way you handle any data in a RDMS, you assign a primary key to the information (ie row), only in this case it would be assign a key to the macro, so it doesn’t matter what order the mods are loaded. Once the load of all mods is complete, you:

Set Key ID 
FOR ALL EXISTING MACROS
    IF Is Macro a GS-E Macro THEN 
        IF Macro DOES NOT have a Key ID THEN 
            Assign Key ID to Macro
        END IF
        Record Copy of Macro and associate it with current Key ID
        Increment Key ID
    END IF
NEXT

Then it’s only a matter of keep the data for the macros in a SaveVarible .LAU file, a running table of associated Key IDs and Status of Macros would keep track of the information

Status
I = Inserted
U = Updated
D = Deleted

So, a reset would restore all Macros with a U or D status back to their previous saved form based on the Key ID from the previously saved macros.

Created macros would start fresh with a new Key ID, the code would be saved in a separate SaveVarible .LAU and written to the existing associated Class/Spec .LAU once the user had finalized the code by pressing a Saved button.

Updated macros would start with copying the existing Macro code to a separate SaveVarible .LAU, and the User could modify the code and Save the changes just as it currently works - however, if they decided that the code was in error, a reset would restore the code saved in the separate SaveVarible .LAU based on the Key ID of the macro.

Deleted macros could be handled like Updated or marked as Deleted in a list table and simply not displayed, restoring previously deleted macros would required displaying them again, or restoring them like Update would be handled.

I know this is all over arcing - generalized statements about how this could be done. I know and have seen parts of these same types of ideas handled by other LAU AddOns.

I don’t really know LAU programming, but I do have almost 30 years of computer programming experience and I know some 33 different programming languages, and I am currently focusing on SQL Development and programming. I can see how this could be done, I’ve seen other AddOn code that has done parts of this before, but I don’t have the skill that you do to make these changes.

Like you I also have 30 years programming and system development. The theory of what you are suggesting is perfectly feasible and where I started.

I also don’t know Lua. I am writing this going in c# or Java I would do X how do I do that in lua. If you look at things like why there is a macro name box in the editor if its just going to be LiveTest all the time you can see that the concepts you are talking about are there in the design. Its all time and patience. I hit a road block so worked from who the target audience for the mod was at the time. This was trying to make some quirks easier for people comfortable with the original GnomeSequencer who were used to editing out of game, and worked from there. Most of my design constraints are from keeping backwards compatibility.

I miss a few things programming this from the real world like UnitTests, CI, an ingame debugger and object inspector, an IDE, a coherent RDMS and an OO framework. The amount of time I am fixing regression as all the unittests need to be run ingame by a person is frightening.

Ooo … that means you remember 150 baud modems and Tandy computers … sigh … the Trash80. Oh and saving your programs on an audio cassette tape?

And of course … the original Apple computer … not the Apple ][ … but the first one.

Load

Press Play on Tape

Cough Cough … IBM Punch Cards … Cough Cough

I’ve looked at much of the coding in LAU and realized I’m just not that interested in learning another language.

When stuff goes wrong I can CSI the LAU code much of the time, but create something like this from nothing is beyond me currently - so you are worlds better than I am with this.

I’ll post some of the AddOns that I think you might be able to steal code from for GS-E.

I would just like to thank TimothyLuke for all his hard work in making GS-E possible, I was just on the verge of quitting WoW when I found this addon.
Also I would like to include all the clever people who create the sequences.

                                   THANK YOU

TimothyLuke,

Let me echo what Grunt has said as well, thank you for all the hard work you’ve done on this AddOn.

From Curse, the AddOn MessageBoard contains code that may help with what I was talking about with the editor. It has the Update, Insert, and Delete features we were talking about. The forum areas can be thought of as Class/Spec sections in GS-E, so this might help you out.

[quote quote=31017]the clever people who create the sequences[/quote] are awesome!

Im working on a feature request from Lutechi to incorporate some colour markup for sequences. Here is a first cut.

In order to make that work I can do this two ways. I can reuse the engine from the Translator or write a second one. What I am thinking of doing is refactoring the Engine from the Translator and the usEN language files and moving them into the Sequence Editor with the Translator just containing the additional languages. This will increase the size of the Editor but wont increase the size of the core. ie If you disable the translator the core will still be its current snappy self. The additional language files will still remain optional.

By having the languages as a seperate addon that plugs into the editor, it means that we can create an errata file to be added into myMacros or similar for local problems. I dont play the game in every language ad while i have written a c# program to interrogate the Blizzard out of game API to get the language files there are things I miss. For example this morning Zalasir pointed out that the German translations missed Fiery Brand and Empower Wards. While I now have an export running, that process takes 4-5 hours and doesnt include Simplified Chinese. Where as adding somthing like

Lang[Key]["deDE"] {
[123456] = "Tuefelsklinge"
}
Lang[Hash]["deDE"] {
["Tuefelsklinge"] = 123456
}
Lang[Shadow]["deDE"] {
["tuefelsklinge"] = 123456
}

to a local file while waiting for the updater to complete makes resolution a few minutes rather than days.

@maarc Some of the refactoring I am doing will also make your request a lot easier.

The roadmap from here is :
1.2 - Sequence Markup as per the screenshot – Request by @Lutechi 1.2 also has a ton of fixes. The ability to create a new macro without having to first choose an existing one. (It still uses LiveTest at this stage.) Allowing Personal macros to overflow to General Macros. Options to change all ingame colours.
1.3 - Full ingame editor – requested by @Maarc
1.4 - Ability to share updates to macros via ingame comm channels with Raid/Guild – Requested by @Lutechi

This last one is still highly theoretical but the theory is that 1.3 will add what programmers call serialization so that you can have multiple revisions of the same macro. If someone in your guild or raid has a later version of the macro you would get an option to save their version and use that. THERE IS STILL A TON OF HEAD THINKING THAT NEEDS TO HAPPEN HERE so please dont take this as gospel on how it will work but this is the concept.

TimothyLuke, that looks awesome. Just an idea and don’t kill me lol.

I wonder if the colours can be triggered when is spelled correctly. That way makes it easier to debug for example when something is misspelled or something missing that might break it is colored red or gray, instead of white or whatever color you give to each when is correct.