Hey all,
Finally getting around to multiboarding, and was wondering if there is a certain flaw that could cause a multiboard to go full screen? Or are there certain ways that text can be displayed in them?
My multiboard is filling in all the hard-coded stuff, but anything that requires a function call is not filled in.
My library so far is:
And when I call HeroStatBoard(), it takes up full screen (when largest value is 50?) and only the hard coded strings are filled in. the rest is blank. I added a random BJDebugMsg in the middle to determine if it was still running and to see if it could make a successful function call, and it did so flawlessly.
Any ideas?
Finally getting around to multiboarding, and was wondering if there is a certain flaw that could cause a multiboard to go full screen? Or are there certain ways that text can be displayed in them?
My multiboard is filling in all the hard-coded stuff, but anything that requires a function call is not filled in.
My library so far is:
JASS:
library MultiBoards
globals
//array used to store heroes multiboards
multiboard array hDataMB
endglobals
//call UpdateMultiboardItem(mb, row, column, val, icon, width)
function UpdateMultiboardItem takes multiboard mb, integer row, integer column, string val, string icon, real width returns nothing
local multiboarditem mbi = MultiboardGetItem(mb, row, column)
call MultiboardSetItemStyle(mbi, val != "", icon != "")
if (val != "") then
call MultiboardSetItemValue(mbi, val)
endif
if (icon != "") then
call MultiboardSetItemIcon(mbi, icon)
endif
call MultiboardSetItemWidth(mbi, width)
call MultiboardReleaseItem(mbi)
set mbi = null
endfunction
function CreateMultiboardNew takes integer rows, integer columns, string title returns multiboard
local multiboard mb = CreateMultiboard()
call MultiboardSetRowCount(mb, rows)
call MultiboardSetColumnCount(mb, columns)
call MultiboardSetTitleText(mb, title)
call MultiboardDisplay(mb, true)
return mb
endfunction
function HeroStatBoard takes nothing returns nothing
local integer pN = GetPlayerId(GetTriggerPlayer())
local multiboard mb = CreateMultiboard()
local integer rows = 25
local integer columns = 5
local string title = "Hero Stats"
local integer i = 0
loop
exitwhen i > TOTAL_PLAYERS
set hDataMB[i] = CreateMultiboardNew(rows, columns, title)
//call UpdateMultiboardItem(mb, row, column, val, icon, width)
call UpdateMultiboardItem(hDataMB[i], 0, 0, "Name:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 0, 1, GetUnitName(hData[i].Hero), "", 30)
//call UpdateMultiboardItem(hDataMB[pN], 0, 2, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 0, 3, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 0, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 1, 0, "Class:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 1, 1, hData[i].Class, "", 30)
//call UpdateMultiboardItem(hDataMB[pN], 1, 2, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 1, 3, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 1, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 2, 0, "Role:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 2, 1, hData[i].Role, "", 30)
//call UpdateMultiboardItem(hDataMB[pN], 2, 2, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 2, 3, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 2, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 3, 0, "Zone:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 3, 1, hData[i].Zone, "", 30)
//call UpdateMultiboardItem(hDataMB[pN], 3, 2, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 3, 3, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 3, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 4, 0, "Weight:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 4, 1, "", "", 5)
call UpdateMultiboardItem(hDataMB[i], 4, 2, I2S(hData[i].WeightHeld)+" //"+I2S(hData[i].WeightAllowance), "", 20)
call UpdateMultiboardItem(hDataMB[i], 4, 3, "", "", 5)
//call UpdateMultiboardItem(hDataMB[pN], 4, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 5, 0, "", "", 50)
call BJDebugMsg("Middle of multiboard: Player ("+I2S(i)+") Heros base life is: "+R2S(hData[i].Life.Base))
//call UpdateMultiboardItem(hDataMB[pN], 5, 1, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 5, 2, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 5, 3, "", "", 0)
//call UpdateMultiboardItem(hDataMB[pN], 5, 4, "", "", 0)
call UpdateMultiboardItem(hDataMB[i], 6, 0, "Stats:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 6, 1, "Base", "", 10)
call UpdateMultiboardItem(hDataMB[i], 6, 2, "Items", "", 10)
call UpdateMultiboardItem(hDataMB[i], 6, 3, "Buffs", "", 10)
call UpdateMultiboardItem(hDataMB[i], 6, 4, "Total", "", 10)
call UpdateMultiboardItem(hDataMB[i], 7, 0, "Armor:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 7, 1, R2S(hData[i].Armor.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 7, 2, R2S(hData[i].Armor.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 7, 3, R2S(hData[i].Armor.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 7, 4, R2S(hData[i].Armor.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 8, 0, "Life:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 8, 1, R2S(hData[i].Life.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 8, 2, R2S(hData[i].Life.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 8, 3, R2S(hData[i].Life.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 8, 4, R2S(hData[i].Life.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 9, 0, "Mana:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 9, 1, R2S(hData[i].Mana.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 9, 2, R2S(hData[i].Mana.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 9, 3, R2S(hData[i].Mana.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 9, 4, R2S(hData[i].Mana.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 10, 0, "Attack Speed:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 10, 1, R2S(hData[i].AttackSpeed.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 10, 2, R2S(hData[i].AttackSpeed.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 10, 3, R2S(hData[i].AttackSpeed.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 10, 4, R2S(hData[i].AttackSpeed.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 11, 0, "Movement Speed:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 11, 1, R2S(hData[i].MovementSpeed.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 11, 2, R2S(hData[i].MovementSpeed.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 11, 3, R2S(hData[i].MovementSpeed.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 11, 4, R2S(hData[i].MovementSpeed.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 12, 0, "Physical Damage:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 12, 1, R2S(hData[i].PhysicalDamageModifier.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 12, 2, R2S(hData[i].PhysicalDamageModifier.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 12, 3, R2S(hData[i].PhysicalDamageModifier.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 12, 4, R2S(hData[i].PhysicalDamageModifier.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 13, 0, "Physical Crit Bonus:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 13, 1, R2S(hData[i].PhysicalCritBonus.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 13, 2, R2S(hData[i].PhysicalCritBonus.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 13, 3, R2S(hData[i].PhysicalCritBonus.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 13, 4, R2S(hData[i].PhysicalCritBonus.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 14, 0, "Physical Crit Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 14, 1, R2S(hData[i].PhysicalCritChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 14, 2, R2S(hData[i].PhysicalCritChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 14, 3, R2S(hData[i].PhysicalCritChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 14, 4, R2S(hData[i].PhysicalCritChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 15, 0, "Melee Stun Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 15, 1, R2S(hData[i].MeleeStunChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 15, 2, R2S(hData[i].MeleeStunChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 15, 3, R2S(hData[i].MeleeStunChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 15, 4, R2S(hData[i].MeleeStunChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 16, 0, "Spell Damage:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 16, 1, R2S(hData[i].SpellDamageModifier.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 16, 2, R2S(hData[i].SpellDamageModifier.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 16, 3, R2S(hData[i].SpellDamageModifier.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 16, 4, R2S(hData[i].SpellDamageModifier.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 17, 0, "Spell Crit Bonus:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 17, 1, R2S(hData[i].SpellCritBonus.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 17, 2, R2S(hData[i].SpellCritBonus.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 17, 3, R2S(hData[i].SpellCritBonus.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 17, 4, R2S(hData[i].SpellCritBonus.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 18, 0, "Spell Crit Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 18, 1, R2S(hData[i].SpellCritChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 18, 2, R2S(hData[i].SpellCritChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 18, 3, R2S(hData[i].SpellCritChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 18, 4, R2S(hData[i].SpellCritChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 19, 0, "Heal Power:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 19, 1, R2S(hData[i].HealModifier.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 19, 2, R2S(hData[i].HealModifier.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 19, 3, R2S(hData[i].HealModifier.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 19, 4, R2S(hData[i].HealModifier.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 20, 0, "Heal Crit Bonus:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 20, 1, R2S(hData[i].HealCritBonus.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 20, 2, R2S(hData[i].HealCritBonus.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 20, 3, R2S(hData[i].HealCritBonus.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 20, 4, R2S(hData[i].HealCritBonus.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 21, 0, "Heal Crit Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 21, 1, R2S(hData[i].HealCritChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 21, 2, R2S(hData[i].HealCritChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 21, 3, R2S(hData[i].HealCritChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 21, 4, R2S(hData[i].HealCritChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 22, 0, "Block Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 22, 1, R2S(hData[i].BlockChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 22, 2, R2S(hData[i].BlockChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 22, 3, R2S(hData[i].BlockChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 22, 4, R2S(hData[i].BlockChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 23, 0, "Parry Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 23, 1, R2S(hData[i].ParryChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 23, 2, R2S(hData[i].ParryChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 23, 3, R2S(hData[i].ParryChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 23, 4, R2S(hData[i].ParryChance.total()), "", 10)
call UpdateMultiboardItem(hDataMB[i], 24, 0, "Dodge Chance:", "", 20)
call UpdateMultiboardItem(hDataMB[i], 24, 1, R2S(hData[i].DodgeChance.Base), "", 10)
call UpdateMultiboardItem(hDataMB[i], 24, 2, R2S(hData[i].DodgeChance.Items), "", 10)
call UpdateMultiboardItem(hDataMB[i], 24, 3, R2S(hData[i].DodgeChance.Buffs), "", 10)
call UpdateMultiboardItem(hDataMB[i], 24, 4, R2S(hData[i].DodgeChance.total()), "", 10)
call MultiboardDisplay(hDataMB[i], false)
set i = i + 1
endloop
set i = 0
loop
exitwhen i > TOTAL_PLAYERS
if (Player(i) == GetLocalPlayer()) then
call MultiboardDisplay(hDataMB[i], true)
endif
set i = i + 1
endloop
endfunction
endlibrary
And when I call HeroStatBoard(), it takes up full screen (when largest value is 50?) and only the hard coded strings are filled in. the rest is blank. I added a random BJDebugMsg in the middle to determine if it was still running and to see if it could make a successful function call, and it did so flawlessly.
Any ideas?