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.
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
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