Two Questions in One

PiCkstix

New Member
Reaction score
18
Ok what I would like to know is how to make a -random and -allrandom mode so that players DO NOT get the same heroes, like in DotA perhaps.

Here are my -random and -allrandom commands. For the -random players can have the same heroes and with -allrandom I think if it detects that it randomed a hero already picked, the player will not get a hero.

Code:
allrandom
    Events
        Player - Player 3 (Teal) types a chat message containing -allrandom as A substring
    Conditions
    Actions
        For each (Integer B) from 3 to 12, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        ((Player((Integer B))) slot status) Equal to Is playing
                        (Number of units in (Units owned by (Player((Integer B))) matching (((Matching unit) is A Hero) Equal to True))) Equal to 0
                    Then - Actions
                        Set C = 1
                        For each (Integer A) from 1 to C, do (Actions)
                            Loop - Actions
                                Set RandomHero = (Random integer number between 1 and RandomCount)
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (Number of units in (Units of type HeroTypeArray[RandomData[RandomHero]])) Equal to 0
                                    Then - Actions
                                        Unit Group - Pick every unit in (Units owned by (Player((Integer B))) of type Hero Wisp) and do (Actions)
                                            Loop - Actions
                                                Unit - Remove (Picked unit) from the game
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                ((Player((Integer B))) is an ally of Player 1 (Red)) Equal to True
                                            Then - Actions
                                                Set tpoint = (Center of HeroAreaRed <gen>)
                                            Else - Actions
                                                Set tpoint = (Center of HeroAreaBlue <gen>)
                                        Unit - Create 1 HeroTypeArray[RandomData[RandomHero]] for (Player((Integer B))) at tpoint facing Default building facing degrees
                                        Set Hero[(Integer B)] = (Last created unit)
                                        Game - Display to (All players) for 20.00 seconds the text: (Names[(Integer B)] + ( has randomed  + ((Name of Hero[(Integer B)]) + .)))
                                        Special Effect - Create a special effect at tpoint using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
                                        Special Effect - Destroy (Last created special effect)
                                        Camera - Pan camera for (Player((Integer B))) to tpoint over 0.00 seconds
                                        Selection - Select (Last created unit) for (Player((Integer B)))
                                        Custom script:   call RemoveLocation (udg_tpoint)
                                        Player Group - Pick every player in (All players) and do (Actions)
                                            Loop - Actions
                                                Player - Make (Unit-type of Hero[(Integer B)]) Unavailable for training/construction by (Picked player)
                                        Set RandomData[RandomHero] = RandomCount
                                        Set RandomCount = (RandomCount - 1)
                                    Else - Actions
                                        Set C = (C + 1)
                        Wait 1.00 seconds
                    Else - Actions


Code:
random
    Events
        Player - Player 3 (Teal) types a chat message containing - as A substring
        Player - Player 4 (Purple) types a chat message containing - as A substring
        Player - Player 5 (Yellow) types a chat message containing - as A substring
        Player - Player 6 (Orange) types a chat message containing - as A substring
        Player - Player 7 (Green) types a chat message containing - as A substring
        Player - Player 8 (Pink) types a chat message containing - as A substring
        Player - Player 9 (Gray) types a chat message containing - as A substring
        Player - Player 10 (Light Blue) types a chat message containing - as A substring
        Player - Player 11 (Dark Green) types a chat message containing - as A substring
        Player - Player 12 (Brown) types a chat message containing - as A substring
    Conditions
        (Entered chat string) Equal to -random
        (Number of units in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to True))) Equal to 0
    Actions
        Set C = 1
        For each (Integer A) from 1 to C, do (Actions)
            Loop - Actions
                Set RandomHero = (Random integer number between 1 and RandomCount)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Number of units in (Units of type HeroTypeArray[RandomData[RandomHero]])) Equal to 0
                    Then - Actions
                        Unit Group - Pick every unit in (Units owned by (Triggering player) of type Hero Wisp) and do (Actions)
                            Loop - Actions
                                Unit - Remove (Picked unit) from the game
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                ((Triggering player) is an ally of Player 1 (Red)) Equal to True
                            Then - Actions
                                Set tpoint = (Center of HeroAreaRed <gen>)
                            Else - Actions
                                Set tpoint = (Center of HeroAreaBlue <gen>)
                        Unit - Create 1 HeroTypeArray[RandomData[RandomHero]] for (Triggering player) at tpoint facing Default building facing degrees
                        Set Hero[(Player number of (Triggering player))] = (Last created unit)
                        Game - Display to (All players) for 20.00 seconds the text: (Names[(Player number of (Triggering player))] + ( has randomed  + ((Name of Hero[(Player number of (Triggering player))]) + .)))
                        Special Effect - Create a special effect at tpoint using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
                        Special Effect - Destroy (Last created special effect)
                        Camera - Pan camera for (Triggering player) to tpoint over 0.00 seconds
                        Selection - Select (Last created unit) for (Owner of (Last created unit))
                        Custom script:   call RemoveLocation (udg_tpoint)
                        Player Group - Pick every player in (All players) and do (Actions)
                            Loop - Actions
                                Player - Make (Unit-type of Hero[(Player number of (Triggering player))]) Unavailable for training/construction by (Picked player)
                        For each (Integer A) from 1 to 20, do (Actions)
                            Loop - Actions
                                Player - Make HeroTypeArray[(Integer A)] Unavailable for training/construction by (Triggering player)
                        Set RandomData[RandomHero] = RandomCount
                        Set RandomCount = (RandomCount - 1)
                    Else - Actions
                        Set C = (C + 1)

For this I would also like to ask: can you increase a loop by adding to its value within the loop. eg in this case I used from 1 to C. If I used there "Set C = (C + 1)" is it actually working?

Thanks alot
PiCk
 

Dinowc

don't expect anything, prepare for everything
Reaction score
223
I don't know the problem but I've noticed 1 thing:
why did you put the action set C = 1 under loop in the first trigger?
it will keep setting C to 1 and the action set C = (C + 1) will actually do nothing if you keep setting C to 1

place the action "set C = 1" before the loop

maybe I'm wrong but try it....

and no, its not working, otherwise it would be an infinite loop (if it works, it should crash your game)
________________________
btw isn't there already a tutorial for ar mode that could solve your problem with picking only 1 hero type per player?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top