Code:
--------------------------------------------------------------------------------
I was just sitting and looking at my awesome multiboard I made and I figured that I might as well help out those who lack a bit of knowledge with multiboards by posting a sampling on how to make:
1) a good looking multiboard
2) a decent elapsed time count
3) a multiboard that resizes to fit the number of players
4) a multiboard function that also handles the revival for players
This multiboard can be used for AoSs, Arenas or anything else that it is useful to keep track of stats.
-----------------------------------------------
Triggers:
-----------------------------------------------
This is the initialization trigger that starts up your multiboard. Note that Player 1(Red) and Player 7(Green) are ommited in this case because this board is for an AoS that has them as the team's computers.
Code:
Init Multiboard Multiboard
Events
Conditions
Actions
-------- Initialize Multiboard --------
For each (Integer A) from 2 to 6, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Player((Integer A))) slot status) Equal to Is playing
Then - Actions
Set TempInt = (TempInt + 1)
Else - Actions
For each (Integer A) from 8 to 12, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Player((Integer A))) slot status) Equal to Is playing
Then - Actions
Set TempInt = (TempInt + 1)
Else - Actions
Set TempInt = (TempInt + 4)
Multiboard - Create a multiboard with 5 columns and TempInt rows, titled Dawn of Darkness
Set MultiBoard = (Last created multiboard)
-------- Set Style --------
For each (Integer B) from 1 to 5, do (Actions)
Loop - Actions
For each (Integer A) from 1 to TempInt, do (Actions)
Loop - Actions
Multiboard - Set the display style for MultiBoard item in column (Integer B), row (Integer A) to Show text and Hide icons
Multiboard - Set the width for MultiBoard item in column 1, row (Integer A) to 10.00% of the total screen width
Multiboard - Set the width for MultiBoard item in column 2, row (Integer A) to 4.00% of the total screen width
Multiboard - Set the width for MultiBoard item in column 3, row (Integer A) to 2.50% of the total screen width
Multiboard - Set the width for MultiBoard item in column 4, row (Integer A) to 4.00% of the total screen width
Multiboard - Set the width for MultiBoard item in column 5, row (Integer A) to 4.00% of the total screen width
For each (Integer B) from 1 to 5, do (Actions)
Loop - Actions
For each (Integer A) from 1 to TempInt, do (Actions)
Loop - Actions
Multiboard - Set the text for MultiBoard item in column (Integer B), row (Integer A) to <Empty String>
-------- Set Texts --------
Multiboard - Set the text for MultiBoard item in column 1, row 1 to (|cff00D9D9 + (Player Name + |r))
Multiboard - Set the text for MultiBoard item in column 2, row 1 to (|cffEEC10F + (Revive Time + |r))
Multiboard - Set the text for MultiBoard item in column 3, row 1 to (|cffED1C24 + (Kills + |r))
Multiboard - Set the text for MultiBoard item in column 4, row 1 to (|cff008400 + (Deaths + |r))
Multiboard - Set the text for MultiBoard item in column 5, row 1 to (|cff00AEEF + (Spree + |r))
-------- Orc Team Players --------
Set TempCount = 3
Multiboard - Set the text for MultiBoard item in column 1, row 2 to (PlayerColourText[1] + ((Name of (Player(1))) + |r))
For each (Integer A) from 2 to 6, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Player((Integer A))) slot status) Equal to Is playing
Then - Actions
Multiboard - Set the text for MultiBoard item in column 1, row TempCount to (PlayerColourText[(Integer A)] + ((Name of (Player((Integer A)))) + |r))
Set XXTakenSlotXX[(Integer A)] = TempCount
Set TempCount = (TempCount + 1)
Else - Actions
-------- Undead Team Players --------
Multiboard - Set the text for MultiBoard item in column 1, row TempCount to (PlayerColourText[7] + ((Name of (Player(7))) + |r))
Set TempCount = (TempCount + 1)
For each (Integer A) from 8 to 12, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Player((Integer A))) slot status) Equal to Is playing
Then - Actions
Multiboard - Set the text for MultiBoard item in column 1, row TempCount to (PlayerColourText[(Integer A)] + ((Name of (Player((Integer A)))) + |r))
Set XXTakenSlotXX[(Integer A)] = TempCount
Set TempCount = (TempCount + 1)
Else - Actions
-------- Time Slot --------
Multiboard - Set the text for MultiBoard item in column 1, row TempCount to |cffEEC10FElapsed T...
Set TimeSlot = TempCount
Multiboard - Change the color of the title for MultiBoard to (100.00%, 0.00%, 0.00%) with 0.00% transparency
Multiboard - Show MultiBoard
Trigger - Turn on Multi Time Seconds <gen>
Trigger - Turn on Multi Time Minutes <gen>
Trigger - Turn on Multi Time Hours <gen>
Chuckle Brother
View Public Profile
Send a private message to Chuckle Brother
Find all posts by Chuckle Brother
Add Chuckle Brother to Your Buddy List
#2 14-11-05, 09:03 AM
Chuckle Brother
Member Join Date: Jan 2005
Posts: 99
PART 2: I hit the limit for characters to a post so it is in two pieces.
This is the trigger that updates the board with each kill.
Code:
Death Update
Events
Unit - A unit Dies
Conditions
((Dying unit) is A Hero) Equal to True
Actions
Set ReviveTimer[(Player number of TempPlayerSecond)] = (TempInt x (Hero level of (Dying unit)))
Set XXMultiDeath[(Player number of TempPlayerSecond)] = (XXMultiDeath[(Player number of TempPlayerSecond)] + 1)
Set XXMultiKill[(Player number of TempPlayer)] = (XXMultiKill[(Player number of TempPlayer)] + 1)
Set XXMultiSpree[(Player number of TempPlayerSecond)] = 0
Set XXMultiSpree[(Player number of TempPlayer)] = (XXMultiSpree[(Player number of TempPlayer)] + 1)
Multiboard - Set the text for MultiBoard item in column 4, row XXTakenSlotXX[(Player number of TempPlayerSecond)] to (String(XXMultiDeath[(Player number of TempPlayerSecond)]))
Multiboard - Set the text for MultiBoard item in column 5, row XXTakenSlotXX[(Player number of TempPlayerSecond)] to 0
Multiboard - Set the text for MultiBoard item in column 3, row XXTakenSlotXX[(Player number of TempPlayer)] to (String(XXMultiKill[(Player number of TempPlayer)]))
Multiboard - Set the text for MultiBoard item in column 5, row XXTakenSlotXX[(Player number of TempPlayer)] to (String(XXMultiSpree[(Player number of (Owner of (Killing unit)))]))
Set ReviveTimer[(Player number of TempPlayerSecond)] = (TempInt x (Hero level of (Dying unit)))
This is the second to second update of the board, note that is also handles revival for the players
Code:
Multi Time Seconds
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set XXMultiTime[3] = (XXMultiTime[3] + 1)
For each (Integer A) from 2 to 6, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Hero[(Integer A)] is dead) Equal to True
Hero[(Integer A)] Not equal to No unit
Hero[(Integer A)] Not equal to Mirage
Then - Actions
Set ReviveTimer[(Integer A)] = (ReviveTimer[(Integer A)] - 1)
Multiboard - Set the text for MultiBoard item in column 2, row XXTakenSlotXX[(Integer A)] to ((|cffEEC10F + (String(ReviveTimer[(Integer A)]))) + |r)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ReviveTimer[(Integer A)] Less than 0
Then - Actions
Multiboard - Set the text for MultiBoard item in column 2, row XXTakenSlotXX[(Integer A)] to <Empty String>
Set TempPoint = (Center of Thrall Hero Popout <gen>)
Hero - Instantly revive Hero[(Integer A)] at TempPoint, Show revival graphics
Camera - Pan camera for (Owner of Hero[(Integer A)]) to TempPoint over 0.00 seconds
Custom script: call RemoveLocation(udg_TempPoint)
Else - Actions
Else - Actions
For each (Integer A) from 7 to 12, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Hero[(Integer A)] is dead) Equal to True
Hero[(Integer A)] Not equal to No unit
Hero[(Integer A)] Not equal to Mirage
Then - Actions
Set ReviveTimer[(Integer A)] = (ReviveTimer[(Integer A)] - 1)
Multiboard - Set the text for MultiBoard item in column 2, row XXTakenSlotXX[(Integer A)] to ((|cffEEC10F + (String(ReviveTimer[(Integer A)]))) + |r)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ReviveTimer[(Integer A)] Less than 0
Then - Actions
Multiboard - Set the text for MultiBoard item in column 2, row XXTakenSlotXX[(Integer A)] to <Empty String>
Set TempPoint = (Center of Argantes Hero Popout <gen>)
Hero - Instantly revive Hero[(Integer A)] at TempPoint, Show revival graphics
Custom script: call RemoveLocation(udg_TempPoint)
Camera - Pan camera for (Owner of Hero[(Integer A)]) to TempPoint over 0.00 seconds
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
XXMultiTime[3] Less than 10
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
XXMultiTime[2] Less than 10
Then - Actions
Multiboard - Set the text for MultiBoard item in column 2, row TimeSlot to ((String(XXMultiTime[1])) + (:0 + ((String(XXMultiTime[2])) + (:0 + (String(XXMultiTime[3]))))))
Else - Actions
Multiboard - Set the text for MultiBoard item in column 2, row TimeSlot to ((String(XXMultiTime[1])) + (: + ((String(XXMultiTime[2])) + (:0 + (String(XXMultiTime[3]))))))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
XXMultiTime[2] Less than 10
Then - Actions
Multiboard - Set the text for MultiBoard item in column 2, row TimeSlot to ((String(XXMultiTime[1])) + (:0 + ((String(XXMultiTime[2])) + (: + (String(XXMultiTime[3]))))))
Else - Actions
Multiboard - Set the text for MultiBoard item in column 2, row TimeSlot to ((String(XXMultiTime[1])) + (: + ((String(XXMultiTime[2])) + (: + (String(XXMultiTime[3]))))))
This is the minute to minute update, this could be merged with the second to second update but I chose not to.
Code:
Multi Time Minutes
Events
Time - Every 59.00 seconds of game time
Conditions
Actions
Set XXMultiTime[3] = 0
Set XXMultiTime[2] = (XXMultiTime[2] + 1)
The update from hour to hour
Code:
Multi Time Hours
Events
Time - Every 3599.00 seconds of game time
Conditions
Actions
Set XXMultiTime[2] = 0
Set XXMultiTime[1] = (XXMultiTime[1] + 1)
I will be posting up a demo map that shows how this multiboard looks/handles in a real game.
-----------------------------------------------
Needed Variables:
-----------------------------------------------
XXTakenSlotXX[12] = an integer array, this is so that we can set what row a specific player is using, so we can recall it later.
XXMultiTimeXX[3] = an integer array that I use to count the time
1 = hours
2 = minutes
3 = seconds
Multiboard = a multiboard variable to store the multiboard in
PlayerColourText[12] = an array that I fill on map init with each player's colour code
TempCount = a temporary integer I use for various things, in this case it is to document which row we are on when initializing the board
TempInt = a temporary integer that is again used for various things
TimeSlot = the slot(row) that the elapsed time takes up
Revivetimer[12] = an array integer that stores a player's time until revival
TempPoint = just a temporary point so we can remove it after use
anyone can help me cause im confused plz make a trigger of this and put a map here plz its usefull for my aos