Staredit Network > Forums > SC2 Assistance > Topic: [SOLVED] Execution took too long
[SOLVED] Execution took too long
Nov 28 2012, 1:04 pm
By: payne  

Nov 28 2012, 1:04 pm payne Post #1

:payne:

Here is my Action Definition:

Code
Assign units to random players
   Options: Action
   Return Type: (None)
   Parameters
       Players' units region = No Region <Region>
   Grammar Text: Assign units to random players(Players' units region)
   Hint Text: (None)
   Custom Script Code
   Local Variables
       Successful attempts = 0 <Integer>
       Players' units = (Empty unit group) <Unit Group>
       Random Unit = No Unit <Unit>
       SelectedPlayer = 0 <Integer>
   Actions
       General - While (Conditions) are true, do (Actions)
           Conditions
               (Number of Living units in (Any units in Players' units region owned by player 0 matching Excluded: Missile, Dead, Hidden, with at most Any Amount)) != 0
           Actions
               Variable - Set Players' units = (Any units in Players' units region owned by player 0 matching Excluded: Missile, Dead, Hidden, with at most Any Amount)
               General - If (Conditions) then do (Actions) else do (Actions)
                   If
                       Successful attempts == (Number of players in human players)
                   Then
                       General - Pick each integer from 1 to number of players, and do (Actions)
                           Actions
                               Variable - Set PlayersIsChosen[(Picked integer)] = False
                   Else
               Variable - Set SelectedPlayer = (Random integer between 1 and number of players)
               General - While (Conditions) are true, do (Actions)
                   Conditions
                       Or
                           Conditions
                               (Controller of player SelectedPlayer) != User
                               PlayersIsChosen[SelectedPlayer] == True
                   Actions
                       Variable - Set SelectedPlayer = (Random integer between 1 and number of players)
               Variable - Set PlayersIsChosen[SelectedPlayer] = True
               Variable - Modify Successful attempts: + 1
               Variable - Set Random Unit = (Random Living unit from Players' units)
               Unit - Change ownership of Random Unit to player SelectedPlayer and Change Color
               Unit - Make Random Unit Vulnerable
               Unit Group - Remove Random Unit from Players' units


Whenever I run it, sc2 warns me that the execution took too long and it stops running it.
I haven't seen it change ownership of more than 2 units out of the total of units.
My goal is to have it so that it selects a random unit in a region, and gives it to a random player. Then does the same thing for all the players of a certain Player Group. However, it must not give another unit to a player as long as all players haven't received their unit (this is to make sure I do not end up with Player 1 controlling all the units).

Additional (global) variables:
Code
PlayersIsChosen = False <Boolean[6]>
human players = (Empty player group) <Player Group>
number of players = 6 <Integer>


"human players" player group is containing the User players of another player group containing all the team 1 allied players. The map is set up for 6 allied players, but say the Players 4 and 6 are missing, "human players" would contain Players 1, 2, 3, and 5.

EDIT: No idea why I didn't think about that solution before.
Code
Assign units to random players
   Options: Action
   Return Type: (None)
   Parameters
       Players' units region = No Region <Region>
   Grammar Text: Assign units to random players(Players' units region)
   Hint Text: (None)
   Custom Script Code
   Local Variables
       Players' units = (Empty unit group) <Unit Group>
       Random Unit = No Unit <Unit>
   Actions
       General - While (Conditions) are true, do (Actions)
           Conditions
               (Number of Living units in (Any units in Players' units region owned by player 0 matching Excluded: Missile, Dead, Hidden, with at most Any Amount)) != 0
           Actions
               Player Group - Pick each player in human players and do (Actions)
                   Actions
                       Variable - Set Players' units = (Any units in Players' units region owned by player 0 matching Excluded: Missile, Dead, Hidden, with at most Any Amount)
                       Variable - Set Random Unit = (Random Living unit from Players' units)
                       Unit - Change ownership of Random Unit to player (Picked player) and Change Color
                       Unit - Make Random Unit Vulnerable
                       Unit Group - Remove Random Unit from Players' units


Post has been edited 8 time(s), last time on Nov 28 2012, 1:55 pm by payne.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[06:28 am]
Ultraviolet -- sounds like Bound & Defend
[07:43 pm]
Symmetry -- If you take the reins you damn well be ready to ride
[02:46 pm]
NudeRaider -- you wish
[2026-5-23. : 12:43 am]
IskatuMesk -- Ah, so Reindeer Breeding 3: BDSM edition.
[2026-5-22. : 12:45 am]
Moose -- tbh
[2026-5-20. : 8:27 pm]
Symmetry -- It's a bound map where you cross obstacles to earn units to defend your base
[2026-5-20. : 8:16 pm]
Symmetry -- No, the world isn't ready for that
[2026-5-20. : 5:11 pm]
Zoan -- Reindeer Breeding 3?
[2026-5-19. : 7:20 pm]
Symmetry -- I've started *another* map too. Feeling nostalgic.
[2026-5-19. : 7:17 pm]
Symmetry -- But people need constant access to my creations!
Please log in to shout.


Members Online: NudeRaider