• 0.939638386648122

    posted a message on SC2Layout - Visual Studio Code extension

    Hey, I've got a project I'd like to share, which greatly streamlines the process of writing layouts for SC2.


    Visual Studio Code extension introducing support for SC2Layout language.



    More about its feature set: 

    Github: https://github.com/Talv/sc2-layouts

    VSC marketplace: https://marketplace.visualstudio.com/items?itemName=talv.sc2layouts




    1. Is Visual Studio Code free?


    Yes, it's completely free and open source. It should not be mistaken with Microsoft Visual Studio which is entirely different product.


    Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux.



    2. How long does initial setup take?


    About 5 minutes, maybe less :)

    - Install VSCode from https://code.visualstudio.com/

    - Install SC2Layout extension from https://marketplace.visualstudio.com/items?itemName=talv.sc2layouts

    - Save your map files as ".SC2Components".

    - Open map folder in editor as new workspace.

    - You're set!

    Posted in: UI Development
  • 0.951068228807719

    posted a message on .obj file requested for Adept portrait mesh

    In reply to DaveSpectre122:

    In reply to WingedArchon:

    Problem with adept portrait, and some new portairts in general is that they use lens flares, which m3addon couldn't handle due to errors in m3 parsing - there was some most likely totally incorrect string reference to sourceFilePath. Perhaps it was a thing in older models? Though, I don't know what could this file represent, because the only external sources m3 specifies are textures. 


    Anyway, couple days ago I made a fix for that: 

    maybe it will be an use for others.


    That said more up to date version of m3addon can be downloaded here: https://github.com/Talv/m3addon

    Besides mentioned fix it also includes 2 others to stuctures.xml, that relate to import issues of some new models.


    I had some plans to attempt to work on this more and get the plugin into better shape, but sadly I can't find time for this. So all I can do is simple fixes - that is when models cannot be imported at all, or are imported significantly incorrectly. Such issues are often relatively easy to track down.


    Export related issues are much harder.. ideally plugin should be updated to export models in newest m3 version format, so that it can support some of the fancy stuff like lens flares, reflection materials etc. Sadly, that requires considerable research on my side.. but maybe someday.


    Anyway, if you encounter some import related issues let me know - I'll see what I can do. I'd like to keep this plugin alive.

    (I rarely log into sc2mapster.com these day, but I hang out in its Discord channel - easiest way to reach me.. filling bug report in github - issues tab; works as well).

    Posted in: Requests
  • 0.955042527339004

    posted a message on A number of questions about Trigger related issues

    I gotta ask you something: have you considered making separate thread for every seperate issue you're dealing with? Because you're mixing various topics, that are often hardly related within a single thread. By a result you're limiting yourself to help from people who are capable of keeping up with it - apparently only DSE.


    Not to mention in future other people might encounter same problems. When they'll attempt at looking up some info about it, they'll either not find it, as posts are not indexed as good as threads - title is always most important keyword. Or they'll have to crawle through all the irrelevant stuff before getting to the actual answer.


    Although if goal of this thread is some kind exclusive mentorship between you and DSE, then I guess that's okayish - assuming he's fine with doing so.


    (Also these are not even triggers questions, but Layouts / UI.)




    Anchors control position, and can also control width/height, if these are not set explicitly. It is in fact covered in tutorial you've linked. For more detailed explanation lookup this document:

    It might be also in the Wiki, bout couldn't find it - this was provided by @rtschutter IIRC.

    I don't know if there's anything special about Portraits - if you've some issue regarding it, just post snippet of your code.




    What is that even..? ConsoleSkinCacheFrame is different thing. It appears to be used as a preview frame within BattleUI (game menu) - Collections/Consoles. It has no influence on actual ConsolePanel present in game.

    Since introduction of custom Console skins from Blizzard there was small overhaul in regards to how Console panels are applied, but you can still change the default model the same way as it was done in the past - by modifying model links within Assets.txt.

    This is default Console definition within data:


    <CConsoleSkin default="1" id="ConsoleBase_Default" parent="ConsoleBase">
        <Default value="1"/>
        <Name value="ConsoleSkin/Name/Default"/>
        <ReleaseDate value="7/27/2010"/>
        <MinimapPanelModel Model="@@UI/ConsoleModelMinimapPanel"/>
        <InfoPanelModel Model="@@UI/ConsoleModelInfopanel"/>
        <CommandPanelModel Model="@@UI/ConsoleModelCommandPanel"/>



    @@UI/ConsoleModelMinimapPanel means that model link will be lookedup in Assets.txt with race id as postfix:




    All you need to do is create custom Assets.txt that would override pathes above and place it in Base.SC2Data/GameData in your map.




    Nope. Models can indeed be loaded at any stage within game, without preloading. But regardless to that they do need to be actually downloaded.

    This is something Blizzard can do, thanks to CASC, but that tech is not accessible to modders/arcade games.


    And frankly 650 MB is madness - I wasn't aware you could even upload map as huge as this... I don't know what you're developing but I cannot thing of anything that could justify the size. Keep in mind that not everyone lives in places where high speed connections are easily accessible. Take me as an example, currently I'm stuck with ~6Mbit DL. Which means I need like 15 minutes to download something as big as this.
    I'd consider 100MB to be a borderline. Once you hit that limit, you need to take a closer look at your assets and how can you reduce the final size of an map.


    There are of course some big projects such as Dead Zone ( http://www.moddb.com/mods/dead-zone-hope-lost ) with high amount of custom high quality textures and other assets - where it is inevitable to end up with largely sized maps.


    But if you're not developing something like in case above, it's mostly likely effect of bad optimizations on your end. Disabled MPQ compression? Oversized textures? Soundtracks with too high bitrate? etc.

    Posted in: Triggers
  • 0.960666358167515

    posted a message on [Question] Screenshots are changing tint upon upload. How to prevent this?

    When you're saying you're uploading them, you mean uploading to Battle.net, right? As screenshots for arcade section?
    Actually that would explain something.. because I did notice such nothing for some other random arcade map.


    Anyway, it's most likely a flaw in the way Blizzard is processing TGA files. Possibly your TGA images have embedded color map which SC2 can't handle. Or what's more likely it just strips the header that included the color map, without adjusting the image. What in the end may give such effect.


    Your options are:
    - use TGA without embedded color map
    - or simply use JPGs.. as they're better suited for this use-case anyway

    Posted in: Artist Tavern
  • 0.962616822429907

    posted a message on Func Ref/Pointer Syntax
    void fn_prototype(int a);
    void some_function_that_must_match_above_signature(int param)
    void main()
        funcref<fn_prototype> ref;
        ref = some_function_that_must_match_above_signature;


    Some further explanation about _ref thingies can be found here:

    Posted in: Galaxy Scripting
  • 0.965018094089264

    posted a message on Ping Panel limitation

    This part is handled by Triggers. In particular Liberty library that sits in Liberty base dependencies.


    Values are set as constants so cannot be altered directly..

    const int libLbty_gv_c_PINGMAXCOUNT = 3;
    const fixed libLbty_gv_c_PINGRESETTIME = 2.0;
    const fixed libLbty_gv_c_PINGSUPPRESSIONTIME = 0.25;
    const fixed libLbty_gv_c_PINGLOCKOUTTIME = 5.0;

     I think viable way would be to have a trigger tied to Ping Event, which would reset the current counter.


    You should examine libLbty_gf_PingPlay function to get a better idea.

    But in short you should reset the counter of

    int[17] libLbty_gv_pingRecentCount;

    By overriding current value with 0 every time trigger is fired.


    Another way is to make a custom implementation of this system, basing on existing triggers.

    Posted in: UI Development
  • 0.963887065003283

    posted a message on [solved]New Update broken Timer window (yes, galaxy script coded)

    You did alright. Apparently we're missing some relevant part of code.. try to add this:

    TimerWindowShowBorder(TimerWindowLastCreated(), true);

    (After TimerWindowCreate)

    Although it is likely that, this alone won't make the frame to appear.


    If you're saying that you do have VoidStory dependency then lets just use mentioned function. From what I can see the code looks correct in post #4. What was the error it printed?
    I suppose it could not work because VCUI library is not loaded. Some libraries aren't auto loaded until you actually take use of functions/triggers it exports. But it does that only when you use it through GUI elements.


    The easiest way to force autoload would be probably to have dummy trigger w/o any events. And just one action:
    Create Timer Window (Campaign)
    the one from UI (Void) library.
    Provide some fake arguments in order for it to compile.


    Once you do that the library should auto load, and all its functions will be accessible from custom script.

    Posted in: Galaxy Scripting
  • 0.963648380700595

    posted a message on [solved]New Update broken Timer window (yes, galaxy script coded)

    Mentioned function relies on several other functions and variables from VoidStory dependency. So you'll either have to copy-paste all of these, or attach the dependency itself into your map.


    If you wnat just the fix, this should do it:

    // ... THIS PART SHOULD COME AFTER TimerWindowCreate
    DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer\\ConsoleUIContainer\\TriggerWindowPanel\\TimerWindowTemplate");
    DialogControlSendAnimationEvent(DialogControlLastCreated(), PlayerGroupAll(), "HighlightStop");



    But if you're going to create multiple TimerWindows through the game, you'll need to save the hookup id to variable, as it is not possible to create multiple hookups to the same Standard frame IIRC.

    For that you'll need additional global variable, like:

    int gv_timer_frame = -1;

     And the code above would expand to:

    if (gv_timer_frame == -1) {
        gv_timer_frame = DialogControlHookupStandard(c_triggerControlTypePanel, "UIContainer\\ConsoleUIContainer\\TriggerWindowPanel\\TimerWindowTemplate");
    DialogControlSendAnimationEvent(gv_timer_frame, PlayerGroupAll(), "HighlightStop");



    Should work, but keep it mind that I didn't test it at all.

    The code from libVCUI_gf_TimerWindowCreate is for some reason destroying previously created hookup, and then hooks it up again.. but I don't think that's needed.

    Posted in: Galaxy Scripting
  • 0.965277777777778

    posted a message on [SOLVED!] Initial trigger(s) do not fire after publish / disconnected from game

    Okay, I've found out the source of it.
    It's because you've used special BattleUI frame as custom layout frame for loading screen.. BattleUI is actually root frame for Battle.net UI. Apparently trying to use it for loading screen is pretty disruptive :D And something from SC2 cannot recover without a full game restart.


    By curiosity I've tried to use couple of other frames that should not be used for loading screen, but none of it resulted in broken game.
    I don't know what made you use custom layout, and why did you actually pick BattleUI. But this together was worst case possible, haha.


    Generally editor should report about issues like that, but I haven't been seeing anything in the log. So it took a while to find.
    In fact it can be considered as bug, because ideally maps should be sandboxed in SC2. That is nothing you do inside the map should affect the game itself after you quit the map. And destroying Battle.net UI is certainly something that negatively affects user experience ;D


    To summarize, to fix it just just go to *Map -> Map Loading Screen*. Unlink *BattleUI* frame. OK.


    Posted in: Galaxy Editor Bugs and Feedback
  • 0.96575821104123

    posted a message on [SOLVED!] Initial trigger(s) do not fire after publish / disconnected from game

    Nope. There's nothing special you need to do, for your map to work correctly in Battle.net. The behavior you experience is either caused by some obscure bug in SC2 which reason I cannot guess. Or there's *something* in your map that causes this freeze.


    It's good that you were able to save the replay. And what's better, it seems like the bug can be reproduced by running the replay.
    If you could attach the replay here, or upload it somewhere and post the link, then I'd look into it myself (yes, replay from online game is all I need). If the bug will also occur on my end, I should be able to track down the cause.
    Also, what's the length of the replay? Because if the freeze actually happens right after start, I'd expect it to have ~0s.


    In the meantime, here's small checklist you could do, to narrow the area. Proceed it until you'll confirm the freeze doesn't happen anymore.
    (Of course before doing anything of this, backup your map.)
    - Simply republish the map w/o changing anything. To make sure this is not result of some error during publishing process.

    - Remove custom dependencies/mods (if you have any). Publish & retry.
    - Remove triggers that are running at the start of the game. Publish & retry.
    - Remove ALL of the triggers. Publish & retry.
    - Remove ALL preplaced units on the map. Publish & retry.
    If at this point the freeze will still be occuring, I'll be suprised. But you should keep going and remove remaining things such as: custom imported assets (if you have any), lobby attributes/variants, data entries.. it might sound funny, but I'm serious - when you can't guess the source of your trouble, then removing the possibilities piece by piece is smart way to approach it.
    Unless you'll end up with empty map, haha.

    Posted in: Galaxy Editor Bugs and Feedback
  • To post a comment, please or register a new account.