Hi there, I ran in to a strange problem with the Boss Bar UI in my map. The problem is that the boss bar is disappearing randomly while the boss is still alive. I dont have a clue why this is going on with the boss bar. The boss bar was working fine in the previous patches for my map.
@Knallertton: Go Here is a list of the boss bar UI triggersI use for my map.
UI - Display boss bar 1 with title "Hybrid Destroyer ", portrait Assets\Textures\ui_chatbaricons_terran_individual.dds and maximum value 100 for (All players)
UI - Set boss bar 1 boss to Boss[0] (Do refresh the boss bar)
That is probably the case. Several times now I have seen the Boss bar disappear right after I redirected a Melee attack from the Boss unit to another unit, Tho this is not the case everytime sometimes the Boss bar just disappears right after it was created.
Well what ever the problem was I was able to fix it. Here is what I did, I deleted the trigger and made another one and now the boss bar works and stays up unit the boss has been defeated.
The Blizzard boss bar code is truly horrible, here is some slightly better code.
Put it in a custom script action and use initcpbb() as the init function at the bottom.
Show a boss bar with a custom script cpbbRegisterBoss("texture location portrait.dds", bossUnit)
Boss bars are automatically removed when the boss dies, and only 1 will show at a time with magic.
// Boss bar code by Folk// Heavily inspired by FuzzyD's LibBossBars+ and initially ripped from Blizzards libntve.intcpbbEventIndex;unitcpbbEventUnit;intcpbbActive;structcpbbData{boolused;unitboss;stringportrait;texttitle;};constintCPBB_MAX=10;cpbbData[CPBB_MAX]cpbbBosses;intcpbbDialog;intcpbbBgImgBar;intcpbbBgImgPortrait;intcpbbPortraitImage;intcpbbTitleLabel;intcpbbHpBorderImage;intcpbbHpLabel;intcpbbHpFullImage;intcpbbHpCurrentImage;boolcpbbUpdate(boolcheck,boolrun){intid=cpbbEventIndex;unitboss=cpbbEventUnit;inti=CPBB_MAX-1;fixedcurrent;fixedmax;intwidth;while(cpbbBosses[id].boss==boss){if(cpbbActive==id){max=(UnitGetPropertyFixed(boss,c_unitPropLifeMax,true)+UnitGetPropertyFixed(boss,c_unitPropShieldsMax,true));if(max==0||!UnitIsAlive(boss)){TriggerDebugOutput(10,StringToText(UnitGetType(boss)+"/"+IntToString(id)+" gone."),false);cpbbActive=-1;DialogSetVisible(cpbbDialog,PlayerGroupAll(),false);cpbbBosses[id].boss=null;while(i>-1){if(i!=id&&cpbbBosses[i].used){if(cpbbBosses[i].boss!=null&&UnitIsAlive(cpbbBosses[i].boss)){cpbbActive=i;TriggerDebugOutput(10,StringToText("Found next boss: "+IntToString(i)+" ("+UnitGetType(cpbbBosses[i].boss)+")"),false);Wait(1,c_timeGame);DialogSetVisible(cpbbDialog,PlayerGroupAll(),true);break;}else{cpbbBosses[i].boss=null;cpbbBosses[i].used=false;}}i-=1;}returntrue;}current=(UnitGetPropertyFixed(boss,c_unitPropLife,true)+UnitGetPropertyFixed(boss,c_unitPropShields,true));width=FixedToInt(350*(current/max));DialogControlSetPropertyAsString(cpbbPortraitImage,c_triggerControlPropertyImage,PlayerGroupAll(),cpbbBosses[id].portrait);DialogControlSetPropertyAsText(cpbbTitleLabel,c_triggerControlPropertyText,PlayerGroupAll(),cpbbBosses[id].title);DialogControlSetPropertyAsText(cpbbHpLabel,c_triggerControlPropertyText,PlayerGroupAll(),FixedToText(current,0));DialogControlSetSize(cpbbHpCurrentImage,PlayerGroupAll(),width,34);Wait(0.2,c_timeGame);}else{Wait(1,c_timeGame);}}returntrue;}staticvoidcreateBossBarDialog(){playergroupall=PlayerGroupAll();if(cpbbDialog!=c_invalidDialogId){return;}DialogCreate(520,120,c_anchorTop,0,50,false);cpbbDialog=DialogLastCreated();DialogSetRenderPriority(cpbbDialog,10);DialogSetImageVisible(cpbbDialog,false);cpbbBgImgBar=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);DialogControlSetFullDialog(cpbbBgImgBar,all,true);libNtve_gf_SetDialogItemImageType(cpbbBgImgBar,c_triggerImageTypeBorder,all);libNtve_gf_SetDialogItemImage(cpbbBgImgBar,"Assets\\Textures\\ui_mission_leaderboard_frame_light.dds",all);libNtve_gf_SetDialogItemColor(cpbbBgImgBar,Color(100.00,50.20,0.00),all);cpbbBgImgPortrait=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);libNtve_gf_SetDialogItemImageType(cpbbBgImgPortrait,c_triggerImageTypeBorder,all);libNtve_gf_SetDialogItemImage(cpbbBgImgPortrait,"Assets\\Textures\\ui_mission_leaderboard_frame_unit.dds",all);DialogControlSetSize(cpbbBgImgPortrait,all,80,80);DialogControlSetPosition(cpbbBgImgPortrait,all,c_anchorLeft,18,1);libNtve_gf_SetDialogItemColor(cpbbBgImgPortrait,Color(100.00,50.20,0.00),all);cpbbPortraitImage=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);DialogControlSetSize(cpbbPortraitImage,all,70,70);DialogControlSetPositionRelative(cpbbPortraitImage,all,c_anchorCenter,cpbbBgImgPortrait,c_anchorCenter,0,0);cpbbTitleLabel=DialogControlCreate(cpbbDialog,c_triggerControlTypeLabel);DialogControlSetSize(cpbbTitleLabel,all,420,48);DialogControlSetPositionRelative(cpbbTitleLabel,all,c_anchorTopLeft,cpbbPortraitImage,c_anchorTopRight,0,0);libNtve_gf_SetDialogItemStyle(cpbbTitleLabel,"BossBarTitleZerg",all);cpbbHpBorderImage=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);libNtve_gf_SetDialogItemImageType(cpbbHpBorderImage,c_triggerImageTypeBorder,all);libNtve_gf_SetDialogItemImage(cpbbHpBorderImage,"Assets\\Textures\\ui_mission_leaderboard_progressbar_frame.dds",all);DialogControlSetSize(cpbbHpBorderImage,all,360,37);DialogControlSetPositionRelative(cpbbHpBorderImage,all,c_anchorTop,cpbbTitleLabel,c_anchorBottom,0,-12);libNtve_gf_SetDialogItemColor(cpbbHpBorderImage,Color(71.37,32.16,8.63),all);cpbbHpFullImage=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);libNtve_gf_SetDialogItemImageType(cpbbHpFullImage,c_triggerImageTypeBorder,all);libNtve_gf_SetDialogItemImage(cpbbHpFullImage,"Assets\\Textures\\ui_mission_leaderboard_progressbar_fill.dds",all);libNtve_gf_SetDialogItemColor(cpbbHpFullImage,Color(100.00,0.00,0.00),all);DialogControlSetSize(cpbbHpFullImage,all,350,34);DialogControlSetPositionRelative(cpbbHpFullImage,all,c_anchorCenter,cpbbHpBorderImage,c_anchorCenter,0,0);cpbbHpCurrentImage=DialogControlCreate(cpbbDialog,c_triggerControlTypeImage);libNtve_gf_SetDialogItemImageType(cpbbHpCurrentImage,c_triggerImageTypeBorder,all);libNtve_gf_SetDialogItemImage(cpbbHpCurrentImage,"Assets\\Textures\\ui_mission_leaderboard_progressbar_fill.dds",all);libNtve_gf_SetDialogItemColor(cpbbHpCurrentImage,Color(0.00,100.00,0.00),all);DialogControlSetPositionRelative(cpbbHpCurrentImage,all,c_anchorLeft,cpbbHpFullImage,c_anchorLeft,0,0);cpbbHpLabel=DialogControlCreate(cpbbDialog,c_triggerControlTypeLabel);libNtve_gf_SetDialogItemStyle(cpbbHpLabel,"BossBarHP",all);libNtve_gf_SetDialogItemRenderPriority(cpbbHpLabel,520,all);DialogControlSetSize(cpbbHpLabel,all,360,38);DialogControlSetPositionRelative(cpbbHpLabel,all,c_anchorCenter,cpbbHpBorderImage,c_anchorCenter,0,0);}staticvoidtRun(strings){triggert=TriggerCreate(s);TriggerExecute(t,false,false);TriggerDestroy(t);}voidcpbbRegisterBoss(stringportrait,unitboss){intbossId=0;createBossBarDialog();while(true){if(!cpbbBosses[bossId].used){break;}bossId+=1;if(bossId==CPBB_MAX){TriggerDebugOutput(10,StringToText("Too many boss bars, denying "+UnitGetType(boss)+"."),false);return;}}TriggerDebugOutput(10,StringToText("Registered boss bar for "+UnitGetType(boss)+"@"+IntToString(bossId)),false);cpbbBosses[bossId].used=true;cpbbBosses[bossId].boss=boss;cpbbBosses[bossId].portrait=portrait;cpbbBosses[bossId].title=UnitGetName(boss);cpbbEventIndex=bossId;cpbbEventUnit=boss;cpbbActive=bossId;DialogSetVisible(cpbbDialog,PlayerGroupAll(),true);tRun("cpbbUpdate");}// -bb command takes the first unit selected by player 1 and makes it a boss// only available in editor modeboolcpbbchat(boolcheck,boolrun){unitgroupg=UnitGroupSelected(1);unitu;if(UnitGroupCount(g,0)==0){returntrue;}u=UnitGroupUnit(g,1);TriggerDebugOutput(10,StringToText("Selected unit: "+UnitGetType(u)),false);cpbbRegisterBoss("Assets\\Textures\\btn-building-zerg-spinecrawler.dds",u);returntrue;}voidinitcpbb(){if(!GameIsTestMap(false)){return;}TriggerDebugOutput(10,StringToText("-bb command enabled, target anything and type it to get a boss bar for the target."),false);TriggerAddEventChatMessage(TriggerCreate("cpbbchat"),1,"-bb",true);}
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Hi there, I ran in to a strange problem with the Boss Bar UI in my map. The problem is that the boss bar is disappearing randomly while the boss is still alive. I dont have a clue why this is going on with the boss bar. The boss bar was working fine in the previous patches for my map.
@SolidSC: Go
Hard to give any help without any triggers shown, post the triggers here if you don't mind http://peeeq.de/gui.php?game=sc2
@Knallertton: Go Here is a list of the boss bar UI triggersI use for my map.
Might be changes in the coding by blizzard does the boss bar disappear and reappear as the boss's visibility changes?
Still alive and kicking, just busy.
My guide to the trigger editor (still a work in progress)
@willuwontu: Go
That is probably the case. Several times now I have seen the Boss bar disappear right after I redirected a Melee attack from the Boss unit to another unit, Tho this is not the case everytime sometimes the Boss bar just disappears right after it was created.
@SolidSC: Go
Are you declaring the boss unit variable before you are setting the boss bar?
@Knallertton: Go
Yes
if i remember correctly, arrays in the editor start at '1', not '0' could that be the problem?
@joey101d: Go
No problem there
Well what ever the problem was I was able to fix it. Here is what I did, I deleted the trigger and made another one and now the boss bar works and stays up unit the boss has been defeated.
The Blizzard boss bar code is truly horrible, here is some slightly better code.
Put it in a custom script action and use initcpbb() as the init function at the bottom.
Show a boss bar with a custom script cpbbRegisterBoss("texture
location
portrait.dds", bossUnit)
Boss bars are automatically removed when the boss dies, and only 1 will show at a time with magic.