Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
Ultimate GUI Hero Pick System 2.3 Created by -Kobas- Link to JASS version
------------------------------------------------------------------------- Please if you find any errors or bugs report them to me so I can fix them
Features: - Easy to understand/edit/import/use.
- Can be mixed with multiboard together.
- Small file size.
- Unique idea, perfect way to show people something new.
- Now MPI as well.
What is different in my system?
You can edit interface and play with it to make it look like anything you want really easily. How to add more buttons, for example hero icons
You will need to create new destructible doodads just like I did for buttons, edit texture and scaling value
Remember to trigger dummy unit as well. Why so long triggers and so many variables?
Well this system isn't created for 1 player, you can remove all interfaces except undead (example) and just edit variables easily (using another array integer) to make it usable for all players.
You can copy part of triggers as well, they will work perfectly fine alone cuz they use different variable. Can we add more options to system?
Of course, especially if you are working on Single Player maps, you will find system funny once when you remove 90% of triggers created for other players and interfaces Why GUI, use script instead, trackables and such things?
I won't answer to such question, and I will try to ignore such comments -.-
UGHPS Setup
Events
Map initialization
Conditions
Actions
-------- Player Colors --------
Set TextColor[1] = |c00FF0000
Set TextColor[2] = |c000042FF
Set TextColor[3] = |c001CE6B9
Set TextColor[4] = |c00540081
Set TextColor[5] = |c00FFFC01
Set TextColor[6] = |c00FEBA0E
Set TextColor[7] = |c0020C000
Set TextColor[8] = |c00E55BB0
Set TextColor[9] = |c00959697
Set TextColor[11] = |c00FFFFBB
Set TextColor[12] = |c00FF00FF
-------- Player Interface Regions --------
Set UGHPS_InterfaceRegion[1] = Player Interface 1 <gen>
Set UGHPS_InterfaceRegion[2] = Player Interface 2 <gen>
-------- Player multipli value, should be ranged from 100 to 800. Everything above 800 will ruin trigger cuz max array limit will be reached. --------
-------- I use 100 cuz 100 - 20 for each hero = 40 more room between. --------
Set Integer_i = 100
-------- Integer that calculate things, it's easier for me to work like this, if you need different value you can just change 1 variable instead all. --------
Set Integer_k = 1
-------- Interface Camera --------
Set UGHPS_Camera[1] = Interface 1 <gen>
-------- Damage --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 1))] = (Center of Damage 1 <gen>)
-------- Range --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 2))] = (Center of Range 1 <gen>)
-------- Armor --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 3))] = (Center of Armor 1 <gen>)
-------- AoE --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 4))] = (Center of AoE 1 <gen>)
-------- Support --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 5))] = (Center of Support 1 <gen>)
-------- Regeneration --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 6))] = (Center of Regeneration 1 <gen>)
-------- Hero Name --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 7))] = (Center of Hero Name 1 <gen>)
-------- Hero Class --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 8))] = (Center of Hero 1 <gen>)
-------- Hero Introduction --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 9))] = (Center of Intro 1 <gen>)
-------- Stats - Attributes --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 10))] = (Center of A 1 <gen>)
-------- Hero Spawn Location --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 11))] = (Center of Spawn Location 1 <gen>)
-------- Player multipli value, should be ranged from 100 to 800. Everything above 800 will ruin trigger cuz max array limit will be reached. --------
-------- I use 100 cuz 100 - 20 for each hero = 40 more room between. --------
Set Integer_i = 200
-------- Integer that calculate things, it's easier for me to work like this, if you need different value you can just change 1 variable instead all. --------
Set Integer_k = 1
-------- Interface Camera --------
Set UGHPS_Camera[2] = Interface 2 <gen>
-------- Damage --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 1))] = (Center of Damage 2 <gen>)
-------- Range --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 2))] = (Center of Range 2 <gen>)
-------- Armor --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 3))] = (Center of Armor 2 <gen>)
-------- AoE --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 4))] = (Center of AoE 2 <gen>)
-------- Support --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 5))] = (Center of Support 2 <gen>)
-------- Regeneration --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 6))] = (Center of Regeneration 2 <gen>)
-------- Hero Name --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 7))] = (Center of Hero Name 2 <gen>)
-------- Hero Class --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 8))] = (Center of Hero 2 <gen>)
-------- Hero Introduction --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 9))] = (Center of Intro 2 <gen>)
-------- Stats - Attributes --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 10))] = (Center of A 2 <gen>)
-------- Hero Spawn Location --------
Set UGHPS_HeroStats[(Integer_i + (Integer_k + 11))] = (Center of Spawn Location 2 <gen>)
-------- Disable camera variable for all players --------
Set UGHPS_CameraCheck[(Player number of (Player((Integer A))))] = False
-------- Add player select unit event to trigger below. --------
Trigger - Add to UGHPS Buttons <gen> the event (Player - (Player((Integer A))) Selects a unit)
-------- Add player skips cinematic or write xxx to right trigger. --------
Trigger - Add to UGHPS Progress <gen> the event (Player - (Player((Integer A))) skips a cinematic sequence)
Trigger - Add to UGHPS Progress <gen> the event (Player - (Player((Integer A))) types a chat message containing xxx as An exact match)
Trigger - Add to UGHPS Camera x <gen> the event (Time - UGHPS_CameraTimer[(Integer A)] expires)
-------- Let's make clickable units transparent (unvisible) --------
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Click) or ((Unit-type of (Matching unit)) Equal to Settings))) and do (Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency)
Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Paladin
-------- Hero destructible model --------
Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
-------- Damage --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIIIIII|r|cFFFF0000III|r
-------- Range --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
-------- Armor --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIII|r|cFFFF0000IIIIII|r
-------- AoE --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFF00FF00I|r|cFFFF0000IIIIIIIII|r
-------- Support --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
-------- Regeneration --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFFFF0000IIIIIIIIII|r
-------- Hero Name --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Aurrius the Pure
-------- Hero Class --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Palladin
-------- Hero Introduction --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Warrior Hero, exceptional at defense and augmenting nearby friendly troops. Can learn Holy Light, Divine Shield, Devotion Aura and Resurrection. |n|n|cffffcc00Attacks land units.|r
-------- Stats - Attributes --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (|cffffcc0022 + 2.7|r) (17 + 1.8) (13 + 1.5)
-------- Sound - Hero Selected --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedPaladin <gen>
-------- Sound - Hero Picked --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedPaladin <gen>
Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Blood Mage
-------- Hero destructible model --------
Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
-------- Damage --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIIIIII|r|cFFFF0000III|r
-------- Range --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
-------- Armor --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIIIIIII|r|cFFFF0000II|r
-------- AoE --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFFFF0000IIIIIIIIII|r
-------- Support --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFFFF0000IIIIIIIIII|r
-------- Regeneration --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
-------- Hero Name --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Kelen the Destroyer
-------- Hero Class --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Blood Mage
-------- Hero Introduction --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Mystical Hero, adept at controlling magic and ranged assaults. Can learn Flame Strike, Banish, Siphon Mana and Phoenix. |n|n|cffffcc00Attacks land and air units.|r
-------- Stats - Attributes --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (18 + 2.0) (14 + 1.0) (|cffffcc0019 + 3.0|r)
-------- Sound - Hero Selected --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedBloodElf <gen>
-------- Sound - Hero Picked --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedBloodElf <gen>
Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Sylvanas Windrunner
-------- Hero destructible model --------
Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
-------- Damage --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIII|r|cFFFF0000IIIIII|r
-------- Range --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
-------- Armor --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIIIIIII|r|cFFFF0000II|r
-------- AoE --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
-------- Support --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFFFF0000IIIIIIIIII|r
-------- Regeneration --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
-------- Hero Name --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Sylvanas Windrunner
-------- Hero Class --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Ranger
-------- Hero Introduction --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Warrior Hero, adept at enhancing ranged attacks and slaying enemies from afar. Can learn Scout, Cold Arrows, Trueshot Aura, and Starfall. |n|n|cffffcc00Attacks land and air units.|r
-------- Stats - Attributes --------
Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (18 + 1.9 ) (|cffffcc0019 + 1.5|r) (15 + 2.6)
-------- Sound - Hero Selected --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedRanger <gen>
-------- Sound - Hero Picked --------
Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedRanger <gen>
UGHPS Camera
Events
Time - Every 0.10 seconds of game time
Conditions
Actions
-------- Each 0.1 sec we create timer that will set camera above system for right player if he use system. --------
For each (Integer Integer_c) from 1 to 2, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
UGHPS_CameraCheck[Integer_c] Equal to True
Then - Actions
Countdown Timer - Start UGHPS_CameraTimer[Integer_c] as a One-shot timer that will expire in 0.00 seconds
Else - Actions
UGHPS Camera x
Events
Conditions
Actions
-------- It's camera system, just copy it, nothing important really --------
For each (Integer Integer_c) from 1 to 2, do (Actions)
Loop - Actions
Custom script: if GetExpiredTimer() == udg_UGHPS_CameraTimer[udg_Integer_c] then
Camera - Apply UGHPS_Camera[(Player number of (Player(Integer_c)))] for (Player(Integer_c)) over 0.10 seconds
Skip remaining actions
Custom script: endif
Interface Human
Events
Unit - A unit Sells a unit
Conditions
(Unit-type of (Sold unit)) Equal to Human Interface
Actions
Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (D)
(Destructible-type of (Picked destructible)) Equal to Border Orc (D)
(Destructible-type of (Picked destructible)) Equal to Border UD (D)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (D) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (DL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
(Destructible-type of (Picked destructible)) Equal to Border UD (DL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (DL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (DR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
(Destructible-type of (Picked destructible)) Equal to Border UD (DR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (DR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (L)
(Destructible-type of (Picked destructible)) Equal to Border Orc (L)
(Destructible-type of (Picked destructible)) Equal to Border UD (L)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (L) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (R)
(Destructible-type of (Picked destructible)) Equal to Border Orc (R)
(Destructible-type of (Picked destructible)) Equal to Border UD (R)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (R) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (U)
(Destructible-type of (Picked destructible)) Equal to Border Orc (U)
(Destructible-type of (Picked destructible)) Equal to Border UD (U)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (U) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (UL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
(Destructible-type of (Picked destructible)) Equal to Border UD (UL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (UL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border NE (UR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
(Destructible-type of (Picked destructible)) Equal to Border UD (UR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border H (UR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
Interface Orc
Events
Unit - A unit Sells a unit
Conditions
(Unit-type of (Sold unit)) Equal to Orc Interface
Actions
Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (D)
(Destructible-type of (Picked destructible)) Equal to Border NE (D)
(Destructible-type of (Picked destructible)) Equal to Border UD (D)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (D) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DL)
(Destructible-type of (Picked destructible)) Equal to Border NE (DL)
(Destructible-type of (Picked destructible)) Equal to Border UD (DL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (DL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DR)
(Destructible-type of (Picked destructible)) Equal to Border NE (DR)
(Destructible-type of (Picked destructible)) Equal to Border UD (DR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (DR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (L)
(Destructible-type of (Picked destructible)) Equal to Border NE (L)
(Destructible-type of (Picked destructible)) Equal to Border UD (L)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (L) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (R)
(Destructible-type of (Picked destructible)) Equal to Border NE (R)
(Destructible-type of (Picked destructible)) Equal to Border UD (R)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (R) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (U)
(Destructible-type of (Picked destructible)) Equal to Border NE (U)
(Destructible-type of (Picked destructible)) Equal to Border UD (U)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (U) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UL)
(Destructible-type of (Picked destructible)) Equal to Border NE (UL)
(Destructible-type of (Picked destructible)) Equal to Border UD (UL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (UL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UR)
(Destructible-type of (Picked destructible)) Equal to Border NE (UR)
(Destructible-type of (Picked destructible)) Equal to Border UD (UR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border Orc (UR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
Interface Night Elf
Events
Unit - A unit Sells a unit
Conditions
(Unit-type of (Sold unit)) Equal to Night Elf Interface
Actions
Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (D)
(Destructible-type of (Picked destructible)) Equal to Border Orc (D)
(Destructible-type of (Picked destructible)) Equal to Border UD (D)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (D) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
(Destructible-type of (Picked destructible)) Equal to Border UD (DL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (DL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
(Destructible-type of (Picked destructible)) Equal to Border UD (DR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (DR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (L)
(Destructible-type of (Picked destructible)) Equal to Border Orc (L)
(Destructible-type of (Picked destructible)) Equal to Border UD (L)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (L) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (R)
(Destructible-type of (Picked destructible)) Equal to Border Orc (R)
(Destructible-type of (Picked destructible)) Equal to Border UD (R)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (R) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (U)
(Destructible-type of (Picked destructible)) Equal to Border Orc (U)
(Destructible-type of (Picked destructible)) Equal to Border UD (U)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (U) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
(Destructible-type of (Picked destructible)) Equal to Border UD (UL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (UL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
(Destructible-type of (Picked destructible)) Equal to Border UD (UR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border NE (UR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
Interface Undead
Events
Unit - A unit Sells a unit
Conditions
(Unit-type of (Sold unit)) Equal to Undead Interface
Actions
Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (D)
(Destructible-type of (Picked destructible)) Equal to Border Orc (D)
(Destructible-type of (Picked destructible)) Equal to Border NE (D)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (D) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
(Destructible-type of (Picked destructible)) Equal to Border NE (DL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (DL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (DR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
(Destructible-type of (Picked destructible)) Equal to Border NE (DR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (DR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (L)
(Destructible-type of (Picked destructible)) Equal to Border Orc (L)
(Destructible-type of (Picked destructible)) Equal to Border NE (L)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (L) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (R)
(Destructible-type of (Picked destructible)) Equal to Border Orc (R)
(Destructible-type of (Picked destructible)) Equal to Border NE (R)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (R) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (U)
(Destructible-type of (Picked destructible)) Equal to Border Orc (U)
(Destructible-type of (Picked destructible)) Equal to Border NE (U)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (U) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UL)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
(Destructible-type of (Picked destructible)) Equal to Border NE (UL)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (UL) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Picked destructible)) Equal to Border H (UR)
(Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
(Destructible-type of (Picked destructible)) Equal to Border NE (UR)
Then - Actions
Set point_p = (Position of (Picked destructible))
Destructible - Create a Border UD (UR) at point_p facing 0.00 with scale 1.00 and variation 0
Custom script: call RemoveLocation ( udg_point_p)
Destructible - Remove (Picked destructible)
Else - Actions
UGHPS Progress
Events
Conditions
Actions
Set UGHPS_CameraCheck[(Player number of (Triggering player))] = True
Camera - Apply UGHPS_Camera[(Player number of (Triggering player))] for (Triggering player) over 0.00 seconds
Trigger - Turn on UGHPS Camera <gen>
UGHPS Buttons
Events
Conditions
(Unit-type of (Triggering unit)) Equal to Click
Actions
-------- Turn off trigger to fix small bug when player click fast on icon and create few heroes at same time. --------
Trigger - Turn off (This trigger)
-------- Remove selected unit from player selection. --------
Selection - Clear selection for (Triggering player)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Triggering unit) Equal to Click 0001 <gen>
(Triggering unit) Equal to Click 0008 <gen>
Then - Actions
-------- Hero number --------
-------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
Set Integer_k = 20
-------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
-------- Location variable that use position of created unit, used for cleaning leaks :) --------
Set point_p = (Position of (Triggering unit))
-------- We create effect on hero icon (variable point_p) --------
Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
-------- We destroy same effect to clean leak. --------
Special Effect - Destroy (Last created special effect)
-------- We destroy point_p to clean leaks. --------
Custom script: call RemoveLocation ( udg_point_p)
For each (Integer A) from 1 to 3, do (Actions)
Loop - Actions
-------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
-------- We hide all hero destructibles shown to player --------
Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
-------- Now only show right one :) --------
Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
-------- Play sound when player click on hero icon --------
Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
-------- Let's remove all text, create new one and store it to variables once again. --------
For each (Integer A) from 1 to 11, do (Actions)
Loop - Actions
Floating Text - Destroy UGHPS_FT[(Integer A)]
Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Set UGHPS_FT[(Integer A)] = (Last created floating text)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Triggering unit) Equal to Click 0005 <gen>
(Triggering unit) Equal to Click 0009 <gen>
Then - Actions
-------- Hero number --------
-------- WARRNING: 40 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
Set Integer_k = 40
-------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
-------- Location variable that use position of created unit, used for cleaning leaks :) --------
Set point_p = (Position of (Triggering unit))
-------- We create effect on hero icon (variable point_p) --------
Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
-------- We destroy same effect to clean leak. --------
Special Effect - Destroy (Last created special effect)
-------- We destroy point_p to clean leaks. --------
Custom script: call RemoveLocation ( udg_point_p)
For each (Integer A) from 1 to 3, do (Actions)
Loop - Actions
-------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
-------- We hide all hero destructibles shown to player --------
Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
-------- Now only show right one :) --------
Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
-------- Play sound when player click on hero icon --------
Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
-------- Let's remove all text, create new one and store it to variables once again. --------
For each (Integer A) from 1 to 11, do (Actions)
Loop - Actions
Floating Text - Destroy UGHPS_FT[(Integer A)]
Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Set UGHPS_FT[(Integer A)] = (Last created floating text)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Triggering unit) Equal to Click 0003 <gen>
(Triggering unit) Equal to Click 0010 <gen>
Then - Actions
-------- Hero number --------
-------- WARRNING: 60 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
Set Integer_k = 60
-------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
-------- Location variable that use position of created unit, used for cleaning leaks :) --------
Set point_p = (Position of (Triggering unit))
-------- We create effect on hero icon (variable point_p) --------
Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
-------- We destroy same effect to clean leak. --------
Special Effect - Destroy (Last created special effect)
-------- We destroy point_p to clean leaks. --------
Custom script: call RemoveLocation ( udg_point_p)
For each (Integer A) from 1 to 3, do (Actions)
Loop - Actions
-------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
-------- We hide all hero destructibles shown to player --------
Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
-------- Now only show right one :) --------
Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
-------- Play sound when player click on hero icon --------
Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
-------- Let's remove all text, create new one and store it to variables once again. --------
For each (Integer A) from 1 to 11, do (Actions)
Loop - Actions
Floating Text - Destroy UGHPS_FT[(Integer A)]
Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Set UGHPS_FT[(Integer A)] = (Last created floating text)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
Or - Any (Conditions) are true
Conditions
(Triggering unit) Equal to Click 0022 <gen>
(Triggering unit) Equal to Click 0007 <gen>
Integer_h Not equal to 0
Then - Actions
Set UGHPS_CameraCheck[(Player number of (Triggering player))] = False
Unit - Create 1 UGHPS_HERO_H[Integer_h] for (Triggering player) at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + 12)] facing Default building facing degrees
-------- Let's display message to enemy players --------
Set UGHPS_TempForce = (All enemies of (Triggering player))
Quest - Display to UGHPS_TempForce the Hint message: (TextColor[(Player number of (Triggering player))] + ((Name of (Triggering player)) + (|r has picked + (Name of (Last created unit)))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Triggering unit) Equal to Click 0002 <gen>
(Triggering unit) Equal to Click 0006 <gen>
Then - Actions
Set UGHPS_CameraCheck[(Player number of (Triggering player))] = False
Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + (20 x (Random integer number between 1 and 3)))
Unit - Create 1 UGHPS_HERO_H[Integer_h] for (Triggering player) at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + 12)] facing Default building facing degrees
-------- Let's display message to enemy players --------
Set UGHPS_TempForce = (All enemies of (Triggering player))
Quest - Display to UGHPS_TempForce the Hint message: (TextColor[(Player number of (Triggering player))] + ((Name of (Triggering player)) + (|r has randomed + (Name of (Last created unit)))))
-------- Play sound when player select hero --------
Sound - Play UGHPS_Sound[Integer_h] at 100.00% volume, attached to (Last created unit)
-------- Location variable that use position of created unit, used for cleaning leaks :) --------
Set point_p = (Position of (Last created unit))
Camera - Pan camera for (Triggering player) to point_p over 0.00 seconds
Wait 0.00 seconds
-------- We create effect on hero spawn location (variable point_p) --------
Special Effect - Create a special effect at point_p using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
-------- We destroy same effect to clean leak. --------
Special Effect - Destroy (Last created special effect)
Camera - Reset camera for (Triggering player) to standard game-view over 0.00 seconds
-------- We destroy point_p to clean leaks. --------
Custom script: call RemoveLocation ( udg_point_p)
Wait 0.00 seconds
Trigger - Turn on (This trigger)
Skip remaining actions
Else - Actions
Please if you find any errors or bugs report them to me so I can fix them
Change Log
Version 1.0
- Uploaded Spell Version 1.1
- Added blockade to stop players from creating 2 or more heroes with fast clicking (Thanks to Maker)
- Fixed leak trigger action
- Optimized main trigger a little
- Added more documentation and description (Loading Screen as well) Version 1.2
- Optimized triggers to max
- New interface design
- Easier to understand/edit/import/use
- Smaller size Version 1.2b
- Optimized camera triggers (Maker) Version 2.0 Ultimate
- First MPI version
- New hero stats display
- Removed Spells (for now) Version 2.1 Ultimate
- Fixed/Optimized triggers
- More comments Version 2.2 Ultimate
- Added colored text and messages displayed to enemy players when you pick or random your hero
- Added sound when you select or pick hero
- Added Settings button where you can pick 1 between 4 different interfaces
- New system look (Resized models, edited text etc etc) Version 2.3 Ultimate
Fixed/Improved:
- When pressing ESC, the camera pans to the hero selection screen. Make the camera apply instantly. You can also use fade out, apply cam, fade in.
- One can get two heroes if the OK button is clicked rapidly.
- If one clicks OK before a hero is selected, the camera will pan to the center of the map. This situation is not handled with triggers.
- UGHPS camera timers are not initialized automatically for other indexes than 0 and 1. That means it won't work for player 2. You need to create the other timers yourself.
- You should add the events of UGHPS Camera x trigger in the setup trigger.
- UGHPS Buttons does the checks for the rest of the unit types even if it has found a match already. Use skip remaining actions or put the if/then/elses inside each other.
- P2 hero models aren't initially hidden.
- UGHPS Setup has two events, only use Map Initialization.
- Add importing instructions into the map.
Approved. Great system.
Improvements:
-The units sold triggers should be turned off when there are no players in the screen
-Set the number of players into a variable at map initiliazation, use the variable in UGHPS Camera triggers
-Perhaps...
First off, this really is bad for several reasons... You have to create a selection screen for EACH PLAYER. Which can be easily avoided. Second, you make players have to create like 20 regions PER PLAYER. Totally not cool. So, in all terms of the meaning, this is not MUI (not that it has to be in this case) BUT it is not MPI (unless you want to spend about 5 hours per player)
With all of that being said I can only leave here giving you a bad rating. 3/5 until fixed.
... you can always work on a system map or at least, copy all regions by simply selecting em all and copying into your map and then just paste... also you can extract and import all descructable data and load it in your map so you have all descructables.
^ few problems with that. When you import destructible data or any other data it overwrites all previous data... So Lol.
Anyway I'm not even caring about destructible pasting/imports.
It's more about having to reset everything when you put this into your map. You have to define about 20 regions (all having to be exact) plus, you have to define units.
But to be honest, I think anyone in their right mind would find it easier to create something such as this from scratch than to do all of this shit.
Anyway, this interface is more suitable for learning that importing into map.
Because you must setup everything just like you said.
I just showed you how can GUI create cool systems as well as jass.
I don't know how your map look like, witch interface will you use, heroes you created etc etc, so I created it this way.
I can use custom scripts and jass triggers but what's the point, ofc I will upload jass version (when I finish my hosted project because I don't want to share everything with you).
Maybe will you need 2 or 3 hours to setup this system, but honestly I worked on it more than 48 hours only to shape it into this form, you won't find something like this that can be imported in 10 min. Remember patience is key to success.
Oh 1 last thing, if this helped you to learn and understand how systems like this one work, then my job here is done
What I'm trying to point out is that you made it much too complicated for a random GUIer to walk in an edit it. This really just needs one interface zone. Not per each player.
Not much else I can say...
What I'm trying to point out is that you made it much too complicated for a random GUIer to walk in an edit it. This really just needs one interface zone. Not per each player.
Not much else I can say...
You could also ditch the regions completely and use coordinates. Make the user able to configure origin x and origin y, from which other points are calculated and destructibes created.
So the user would only have to set the origin x and origin y (which could be the top left corner coordinates for example) and the script would generate destructibles and possibly regions if they are still needed automatically. Use variables for window width and height for example so they re configurable.
I'm using that kind of system for my full screen inventory. One only needs to set the top left corner x and y coordinates, then everything is created automatically for each player at the same location. Then you could hide/show things locally, so nothing is visible is a player is not in the screen and other players could not see other player's screens.
I know Maker, but as I already told few times, idea is to create your own interface and edit it in any way you want, maybe someone don't need hero models displayed, only hero icons, etc etc.
With all this comments i should really think of making a updated map in your place but well... idk I told em same as you
(updated map = i meant on trackables and coordinates or something..)
for some reason it doesent display the hero doddad and yess my resalution can see the heros doodad like iv seen in the last comments thats the problem because i placed one where u hero spawns and i can see that 1
also how do i make it so that they all arnt red so i can have player blues are blue and player teals are teal ect ect or have them all a nuetrall colour
EDIT: i just tested the part where if u click on ok with out a selected hero and it recks the whole system after clicking ok with out a selected hero u no longer select any thing and u cand do nothin
EDIT2: the cam isent locked for the other players only for red
and the sounds all players can hear it : /
also suggest instead of using x100 for int i use 50 so u can have 12 players not a max of 8
From the looks of it, it has a nice system feel and very original. I'll be using it in my map in the future if you keep it up. Hopefully it be more condense in the future and better. I give it a 4.9/5. keep up the good work
Guys I finished JASS 1.0 version.
It is working flawlessly
I still want to polish it, split setup code from rest of script completely.
Add large number of effects and possibilities.
Expect upload until end of this week
Guys I finished JASS 1.0 version.
It is working flawlessly
I still want to polish it, split setup code from rest of script completely.
Add large number of effects and possibilities.
Expect upload until end of this week
I forgot all about trying to get this for dota 1.... I guess I should resume making it but I have alot on my plate now with work, school, and church. The newest version looks epic
I improved this.
Only 1 interface for all players.
Variables number reduced by half.
Code reduced by 60%.
Faster, safer, more efficient and the most important, easier for use.
As soon as I make sure that there are no bugs and when I add documentation back it will be uploaded.
I disabled profile because of some shit between google and yahoo. I won't bother explaining but I will make new one as soon as I find time to fix this and upload it here.
2.3 is too tedious to be used by any other users. Each player Per interface is madness. Lack of documentary , not efficient at all .
2.4 should be uploaded. Althought its nerco post lol. This needed to be tested.
your purpose of creating this in GUI to make it easily to read for mediocre code users.
Suggestion:
you should put comments on how and changes should be done with each heroes added. List out the steps and code to be changed on the hashtable on a tutorial trigger. That way this system purpose will be fully achieved.
2.3 is too tedious to be used by any other users. Each player Per interface is madness. Lack of documentary , not efficient at all .
2.4 should be uploaded. Althought its nerco post lol. This needed to be tested.
your purpose of creating this in GUI to make it easily to read for mediocre code users.
Suggestion:
you should put comments on how and changes should be done with each heroes added. List out the steps and code to be changed on the hashtable on a tutorial trigger. That way this system purpose will be fully achieved.
Well you are right, I can't deny that.
But problem is GUI isn't jass and even my jass version is bad because it's just simple converted GUI->jass optimized code.
I will see can I create perfect script that will simulate both this hero pick and if clicked on button one shown in dota 2.
I will code it within regular jass and use GUI as well to allow map makers to easily use it.
But problem is time, I don't have it right now, and system I described above is just idea on my mind. It may require a lot of time and testing before I create some version of it, until then, you will need to care about this one.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.