I want to apply many triggers to several maps and I would like to maintain one codebase so when I make a change in the triggers, all maps that use that mod are automatically updated. I know you can do this with Data, but when I start a new Mod, the editor doesn't seem to allow me to create or copy Triggers. Are triggers possible in a mod and if not, am i SOL as far as being able to have one codebase for my triggers? I have already abstracted the code from the map and it's ready to be copy/pasted into a mod if possible.
The problem with libraries is that anytime you make an update to a library, you have to export and then re-import into every other map.
I can't actually even get this method to work - my scripts keep failing to compile in various places when I include as a library. I can, however, always copy trigger code in entirety to other maps. I'm using the same code in the same order in both situations.
In any case, an ideal solution would be truly *one* place where I update code and then it's automatically "distributed" to all the maps it's applied to....just like how Mods work. To me, the difference between a Library and a Mod would be about half an hour of my time.
I read about this technique somewhere.. But it's rather unorthodox. I don't know if Mods support .galaxy files. But if those could be imported and initialized, one possible way to do what you're trying to do is to Ctrl+F11. Save the generated script as a .galaxy, then import it to the mod and have your files "include" it with custom script (if that's even necessary). The only downfall is that the copy you save would well.. Obviously be in a horribly wall of galaxy code. But you won't be reading it, so it shouldn't really be a problem.
The problem with libraries is that anytime you make an update to a library, you have to export and then re-import into every other map.
No need to make a difference between libraries and mods. Just create a library INSIDE of the mod and you can take the advantage of both things at the same time :D
Quote:
I can't actually even get this method to work - my scripts keep failing to compile in various places when I include as a library. I can, however, always copy trigger code in entirety to other maps. I'm using the same code in the same order in both situations.
If you wanna copy your already existing triggers into a library thats actually a bit tricky since all triggers, function, (global) variables, ... use a prefix of the library's ID.
But when you relink all variables again after copying the triggers to their version in the library everything should work fine. :P (or a bit faster by opening the galaxy file in the library and replace all gv_ /gt_ /gf_ and so on by lib+ID+_gv_/etc... You can find the library's id by rightclick -> Library -> Change Library ID)
Okay that's interesting thanks for info. Right now the easiest solution for me seems to copy/paste entire trigger set into each new map. It takes longer to open/save/close file than to copy/paste the triggers actually so it's pretty manageable as long as I'm not doing it every day. Re-linking all my vars in library would take hours and hours and I'm not comfortable editing the code directly at this point, but if I start a new project, I'll be sure to begin that way.
i've recently done this and it works perfectly fine for me
copied all triggers into a library. exported library. opened mod. imported library. set the library ID to 4 letter ID.
in gameplay data/Trigger Libraries set it to load the library
works fine. all my triggers load in my maps that use the mod. works perfectly
the only issue is everytime i open a map in the editor it takes about 3-5 minutes to "Validate Trigger Data"
I'm trying to follow the method of adding the lib+id+gt_ etc via text editor. I setup a new Library inside a mod, copied/pasted my Trigger code (getting all sorts of warnings), then I viewed the script and I copied out all the script into an external text editor and replaced all those occurrences. My script looks good now as far as I can tell.
Now my problem is that I can't figure out how to re-import this as a Trigger library. On the Mac side, it looks like the built-in script editor is basically broken (doesn't let you edit stuff). On the Windows side, when I paste my code back in, it pastes about half of it then it freezes up (Not Responding). I have a lot of Triggers, but this seems strange. Any ideas?
Save the map as .sc2components and open Base.sc2data. There should be a galaxy file of your library, which you can open and replace the code inside with the new one.
save file, open components thing in editor and save again as normal map and everything should work. :D
I want to apply many triggers to several maps and I would like to maintain one codebase so when I make a change in the triggers, all maps that use that mod are automatically updated. I know you can do this with Data, but when I start a new Mod, the editor doesn't seem to allow me to create or copy Triggers. Are triggers possible in a mod and if not, am i SOL as far as being able to have one codebase for my triggers? I have already abstracted the code from the map and it's ready to be copy/pasted into a mod if possible.
If it is triggers only, making a library is easier and also better.
@xKenneth: Go
The problem with libraries is that anytime you make an update to a library, you have to export and then re-import into every other map.
I can't actually even get this method to work - my scripts keep failing to compile in various places when I include as a library. I can, however, always copy trigger code in entirety to other maps. I'm using the same code in the same order in both situations.
In any case, an ideal solution would be truly *one* place where I update code and then it's automatically "distributed" to all the maps it's applied to....just like how Mods work. To me, the difference between a Library and a Mod would be about half an hour of my time.
@jcraigk: Go
I read about this technique somewhere.. But it's rather unorthodox. I don't know if Mods support .galaxy files. But if those could be imported and initialized, one possible way to do what you're trying to do is to Ctrl+F11. Save the generated script as a .galaxy, then import it to the mod and have your files "include" it with custom script (if that's even necessary). The only downfall is that the copy you save would well.. Obviously be in a horribly wall of galaxy code. But you won't be reading it, so it shouldn't really be a problem.
Source if you're interested:
No need to make a difference between libraries and mods.
Just create a library INSIDE of the mod and you can take the advantage of both things at the same time :D
If you wanna copy your already existing triggers into a library thats actually a bit tricky since all triggers, function, (global) variables, ... use a prefix of the library's ID. But when you relink all variables again after copying the triggers to their version in the library everything should work fine. :P (or a bit faster by opening the galaxy file in the library and replace all gv_ /gt_ /gf_ and so on by lib+ID+_gv_/etc... You can find the library's id by rightclick -> Library -> Change Library ID)
@Talon0815: Go
Okay that's interesting thanks for info. Right now the easiest solution for me seems to copy/paste entire trigger set into each new map. It takes longer to open/save/close file than to copy/paste the triggers actually so it's pretty manageable as long as I'm not doing it every day. Re-linking all my vars in library would take hours and hours and I'm not comfortable editing the code directly at this point, but if I start a new project, I'll be sure to begin that way.
@Talon0815: Go
I'm trying to follow the method of adding the lib+id+gt_ etc via text editor. I setup a new Library inside a mod, copied/pasted my Trigger code (getting all sorts of warnings), then I viewed the script and I copied out all the script into an external text editor and replaced all those occurrences. My script looks good now as far as I can tell.
Now my problem is that I can't figure out how to re-import this as a Trigger library. On the Mac side, it looks like the built-in script editor is basically broken (doesn't let you edit stuff). On the Windows side, when I paste my code back in, it pastes about half of it then it freezes up (Not Responding). I have a lot of Triggers, but this seems strange. Any ideas?
Save the map as .sc2components and open Base.sc2data. There should be a galaxy file of your library, which you can open and replace the code inside with the new one. save file, open components thing in editor and save again as normal map and everything should work. :D