• 0

    posted a message on NA unable to publish maps.

    It works!

    Thanks Traysent.

    Posted in: General Chat
  • 0

    posted a message on NA unable to publish maps.

    Anyone still having download issues for players? I would have liked a confirmation from Traysent because I'm paranoid I'll break it.

    Posted in: General Chat
  • 0

    posted a message on Notify to open map info in lobby?

    You can't expect as many as 10% of the players to bother with the tutorial. A lot of people join games with a group, and what do you expect them to do? Stop playing together for a moment and go do the tutorial individually?

    The best solution is a learning curve that flows with the standard game. Start out with minimal complexity, then add it over time. There's a reason the first SC2 campaign mission only lets you build marines. Like the campaigns, you can use this as an opportunity to give players a choice in how they grow stronger.

    Posted in: Miscellaneous Development
  • 0

    posted a message on Warcraft 3-like special effects?

    I deal with triggered special effects a lot, so here's what I do.

    First check to see if the effect needs to play it's Stand animation or its Death animation. It depends on the model and you need to know for it to work properly. Go to the Data editor, and search for it under the Models tab. Search for the model you want. Open up "(Basic) Art: Model" on the right. Click "View In Cutscene Editor".

    In the Cutscene Editor, look at the blue bar underneath the red bar on the bottom right area. If it says Stand or Birth or something similar, then you want to let it run its default animation. If it says Death while doing its effect, then you want to run its Death effect.

    Death effects are the simplest because you just kill them immediately after creating them. Use the "Create Model At Point" or "Attach Model To Unit" trigger actions, then after that do "Kill Model" on "Last Created Actor". An example:

    Actor - Create actor model Energy Blast Impact at point (Position of Ball)
    Actor - Kill actor model (Last created actor)
    

    For the others, however, you need to let them live long enough to play their full animation and then dispose of them. If you neglect to dispose of them, you will have a memory leak that will add up and cause lag over time. So instead of killing the model immediately, I run an Action Definition that creates a new thread of execution and waits a specified amount of time, then kills the model. Here's the code for it:

    Actor Disposal
        Options: Action, Create Thread
        Return Type: (None)
        Parameters
            Actor = No Actor <Actor>
            Time = 0.0 <Real>
        Grammar Text: Actor Disposal(Actor, Time)
        Hint Text: (None)
        Custom Script Code
        Local Variables
        Actions
            General - Wait Time Game Time seconds
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    Actor != No Actor
                Then
                    Actor - Kill actor model Actor
                Else
    

    Important - make sure Create Thread is checked under Options at the top!

    Use this immediately after creating the model and it will monitor it then destroy it without interrupting your trigger's current thread of execution because it creates a new one. An example:

    Actor - Create actor model Feedback Impact at point (Position of (Triggering unit))
    Actor Disposal((Last created actor), 2.0)
    ...Continue doing stuff in the trigger
    

    The Cutscene Editor can help you see how long it takes for the animation to finish, so set the timer longer than that.

    When you use "Attach Model To Unit" instead, I typically use the attachment points "Center", "Origin", and "Overhead".

    Hope this helps.

    Posted in: Triggers
  • 0

    posted a message on NA unable to publish maps.

    Thanks for trying, Traysent.

    I've got some feedback as well.

    • What are you trying to do - publish a map in the editor? play the map in arcade? play the map in custom games?

    I can't publish at all, on the Americas (Europe is fine).

    This may be a blessing in disguise, however, because if I did manage to upload it, I'd probably be experiencing the same problem with players downloading. My file size is 3.66 mb.

    • Map name that is failing

    Extreme Dodgeball. Let me be clear that it can still be played, I just can't publish updates.

    • Bnet email of the account getting the failure

    [email protected]

    • Time of the failure

    Same problems for last week or two.

    • Exact client (or editor) behavior (does it time out, does it fail immediately, what’s the message)

    Sometimes it fails immediately, sometimes after a minute or so. It alternates between two error messages: "There was a temporary error with your request. Please try again in a few minutes." and "Connection to publishing service has been interrupted. Please try again."

    Posted in: General Chat
  • 0

    posted a message on Sliding on ice trigger

    Here's what I did in my old map Build Your Own Maze. Feel free to just copy it.

       Local Variables
            integerA = 0 <Integer>
            intertiaAngle = 0.0 <Real>
            offset = 0.0 <Real>
    

           General - For each integer integerA from 1 to 8 with increment 1, do (Actions)
                Actions
                    General - If (Conditions) then do (Actions) else do (Actions)
                        If
                            (Runner[integerA] is alive) == True
                        Then
                            General - If (Conditions) then do (Actions) else do (Actions)
                                If
                                    (Runner[integerA] is in sliding) == True
                                Then
                                    Variable - Set intertiaAngle = (Atan2((Custom value 1 of Runner[integerA]), (Custom value 2 of Runner[integerA])))
                                    Variable - Set offset = (90.0 * (LeftOrRight(intertiaAngle, (Facing of Runner[integerA]))))
                                    Unit - Set Runner[integerA] Movement Speed to (Max(0.2, ((Runner[integerA] Movement Speed (Current)) * 0.9)))
                                    Unit - Set Runner[integerA] custom value 1 to ((Custom value 1 of Runner[integerA]) + (0.03 * (Cos((intertiaAngle + offset)))))
                                    Unit - Set Runner[integerA] custom value 2 to ((Custom value 2 of Runner[integerA]) + (0.03 * (Sin((intertiaAngle + offset)))))
                                    General - If (Conditions) then do (Actions) else do (Actions)
                                        If
                                            (((Custom value 1 of Runner[integerA]) ^ 2.0) + ((Custom value 2 of Runner[integerA]) ^ 2.0)) < 0.05
                                        Then
                                            Unit - Set Runner[integerA] custom value 1 to ((Custom value 1 of Runner[integerA]) + (0.02 * (Cos((Facing of Runner[integerA])))))
                                            Unit - Set Runner[integerA] custom value 2 to ((Custom value 2 of Runner[integerA]) + (0.02 * (Sin((Facing of Runner[integerA])))))
                                        Else
                                            General - If (Conditions) then do (Actions) else do (Actions)
                                                If
                                                    (((Custom value 1 of Runner[integerA]) ^ 2.0) + ((Custom value 2 of Runner[integerA]) ^ 2.0)) > 0.05
                                                Then
                                                    Unit - Set Runner[integerA] custom value 1 to ((Custom value 1 of Runner[integerA]) * 0.9)
                                                    Unit - Set Runner[integerA] custom value 2 to ((Custom value 2 of Runner[integerA]) * 0.9)
                                                Else
                                    Unit - Set Runner[integerA] custom value 1 to ((Custom value 1 of Runner[integerA]) * 0.99)
                                    Unit - Set Runner[integerA] custom value 2 to ((Custom value 2 of Runner[integerA]) * 0.99)
                                    General - If (Conditions) then do (Actions) else do (Actions)
                                        If
                                            (Runner[integerA] order at index 0) != No Order
                                            (DistanceSquared((Position of Runner[integerA]), (Target point for (Runner[integerA] order at index 0)))) < 0.15
                                        Then
                                            Unit - Order Runner[integerA] to ( Stop) (Replace Existing Orders)
                                        Else
                                Else
                                    Unit - Set Runner[integerA] Movement Speed to (Runner[integerA] Movement Speed (Default))
                                    Unit - Set Runner[integerA] custom value 1 to ((Custom value 1 of Runner[integerA]) * 0.8)
                                    Unit - Set Runner[integerA] custom value 2 to ((Custom value 2 of Runner[integerA]) * 0.8)
                            Unit - Move Runner[integerA] instantly to ((Position of Runner[integerA]) offset by ((Custom value 1 of Runner[integerA]), (Custom value 2 of Runner[integerA]))) (Blend)
                            General - If (Conditions) then do (Actions) else do (Actions)
                                If
                                    (Abs((Custom value 1 of Runner[integerA]))) < 0.01
                                    (Abs((Custom value 2 of Runner[integerA]))) < 0.01
                                Then
                                    Unit - Set Runner[integerA] custom value 1 to 0.0
                                    Unit - Set Runner[integerA] custom value 2 to 0.0
                                Else
                            Unit Group - Remove Runner[integerA] from sliding
                            General - If (Conditions) then do (Actions) else do (Actions)
                                If
                                    Following[integerA] == True
                                    (Runner[integerA] is hidden) == False
                                Then
                                    Camera - Pan the camera for player integerA to ((Position of Runner[integerA]) offset by (FollowOffsetX[integerA], FollowOffsetY[integerA])) over 0.25 seconds with Existing Velocity% initial velocity, 10.0% deceleration, and Do Not use smart panning
                                Else
                        Else
    

    "sliding" is a global unit group of units that are supposed to be sliding.
    Custom values 1 and 2 are used to represent the X velocity and Y velocity. This is a physics based solution so it's not the simplest one but it works well.
    The above trigger calls two custom functions:

    DistanceSquared
        Options: Function
        Return Type: Real
        Parameters
            Point1 = No Point <Point>
            Point2 = No Point <Point>
        Grammar Text: DistanceSquared(Point1, Point2)
        Hint Text: (None)
        Custom Script Code
        Local Variables
        Actions
            General - Return ((((X of Point1) - (X of Point2)) ^ 2.0) + (((Y of Point1) - (Y of Point2)) ^ 2.0))
    
    LeftOrRight
        Options: Function
        Return Type: Integer
        Parameters
            Angle1 = 0.0 <Real>
            Angle2 = 0.0 <Real>
        Grammar Text: LeftOrRight(Angle1, Angle2)
        Hint Text: (None)
        Custom Script Code
        Local Variables
            A1 = (Angle1 mod 360.0) <Real>
            A2 = (Angle2 mod 360.0) <Real>
            difference = ((Angle2 - Angle1) mod 360.0) <Real>
        Actions
            ------- Returns +1 if Angle2 is to the left of Angle1, otherwise returns -1
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    difference >= 0.0
                    difference <= 180.0
                Then
                    General - Return 1
                Else
                    General - If (Conditions) then do (Actions) else do (Actions)
                        If
                            difference < 0.0
                            difference >= -180.0
                        Then
                            General - Return -1
                        Else
                            General - If (Conditions) then do (Actions) else do (Actions)
                                If
                                    difference > 180.0
                                    difference <= 360.0
                                Then
                                    General - Return -1
                                Else
                                    General - If (Conditions) then do (Actions) else do (Actions)
                                        If
                                            difference < -180.0
                                            difference >= -360.0
                                        Then
                                            General - Return 1
                                        Else
            UI - Display "LeftOrRight error" for (All players) to Subtitle area
            General - Return 1
    


    Posted in: Triggers
  • 0

    posted a message on Ball bounce

    I'll see your needlessly complex answer, and raise you a tutorial.

    http://www.sc2mapster.com/forums/resources/tutorials/22121-triggers-implementing-a-physics-engine/

    But the answer that suits you depends on your understanding of Newtonian physics and how intricate your solution needs to be. So give some detail on how your current system works - bouncing off vertical/horizontal walls. And I'm sure we can find a solution that doesn't increase the scope of your physics more than necessary.

    Posted in: Triggers
  • 0

    posted a message on bounds

    Try the map Build Your Own Maze. You can make your own bound and play it with other people.

    Posted in: Map Suggestions/Requests
  • 0

    posted a message on Got a big school project - thinking about making a Starcraft 2 map.

    @Sixen: Go

    Warcrap 3 was responsible for my interest in programming leading to a degree in CS. So yes, this is truefax.

    OP, you will have a lot to learn and you will struggle. But you may have a new found appreciation of the art.

    Posted in: General Chat
  • 0

    posted a message on Inflict damage with triggers

    If I'm understanding what you're saying correctly, it's that the damager unit for that action is null when you need it to be something? Do a conditional.

    If (Caster is alive) then
    > deal damage to Target from Caster
    else
    > deal damage to Target from Target

    You can make it damage itself. But if your game depends on proper kill credit it won't give the caster credit for the kill. I typically use a custom value for kill credit to get around this.

    Posted in: Triggers
  • 0

    posted a message on Rock the Cabinet - Map Overview

    What about all those waiting until the last minute to submit? Always room for improvement.

    Posted in: General Chat
  • 0

    posted a message on Battlenet Lobby prevent editing team sizes

    I've tried this before. It seems impossible.

    Having locked teams checked doesn't prevent the team size from changing.

    You can set each player to "Locked On Team" but then you can't change their team in the lobby.

    I've resorted to making a trigger that checks whether the team size is greater than the intended max, and if so, redistribute the players randomly and balanced on the teams using new variables for player groups representing teams. This works fine if the teams are meant to be symmetrical.

    Posted in: Triggers
  • 0

    posted a message on Blizzard Arcade Contest and Launch Event

    Do you think the Orc hero models will be available before time runs out?

    This is important.

    Posted in: General Chat
  • 0

    posted a message on Blizzard Arcade Contest and Launch Event
    Quote from Traysent: Go

    You can allow more than 6 players in your game, but we should still be able to get your game’s full experience with just 6 human players.

    I'm no longer disqualified! Thanks!

    Posted in: General Chat
  • 0

    posted a message on WTF Is... : Blizzard Arcade ? (TotalBiscuit)

    I agree that the improvements are nice but too late. The player base isn't too impressive. And most map makers gave up in the first year.

    However, there's a speck of hope that Heroes of the Storm will bring in a wave of players, assuming it syncs up with the same arcade as sc2. Let's hope it's not a flop for that reason.

    And then all the improvements will not have been made in vain. However, if there's one thing I'd like to change, it would be to make the open games lobby the default tab in the arcade.

    Posted in: General Chat
  • To post a comment, please or register a new account.