Hello guys, I have a question ! I am trying to move my dialog bar to another place and make it a bit smaller. When I enable the edit mode with F11 there are 5 movable elements - one is the text, another one is the border. I am trying to figure out what the other 3 do. They all have similar width but diffferent height. One is at the top of the dialog box by default, it is very tin and its type is handle. The other 2 are at the bottom of the dialog box and their type is button. Does anyone know what these 3 bars are for ? / I need the info so I can decide how important their precise location is / Thanks in advance ! Edit:I found out what all the bars are for ^^
Hey All. A while ago I created a mod called Swankified Hud that was an extension on an old version of Dragonspear UI ++. So I'm working on a revamped Swankified UI for EET that doesn't require Dragonpear UI ++ (which isn't compatible with EET).
I got a few questions. Mainly, I rebuilt the Journal to be like a regular menu, but I can't figure out how to pause the game when it opens like the other menus. ie priest and mage scroll, inventory, and character sheet. The other question is, I'm a bit confused about how to grey out or hide certain buttons when certain menus come up. I think because of the menu bar I set up I have to change that around quite a bit so it doesn't look broken when the clock disappears when a menu opens and stuff like that (see pics below).
If you guys are interested in checking the UI I'm working on out I'll post a few screens here so you can see. I elected to stick with the original aspect ratio of the popup menus with the exception of the map, for scaling purposes, and so I could reuse stock SOD assets. The reason I made the map larger is that I find that bgtWorldmap mod's map is too large in scale and hard to navigate in a square viewport. ANYWAY Let me know what you think!
I have a list element in my code that has its row height set to dynamic, and I want one of its rows to change its height depending on some variables. So I thought I'd try to add a label to it and set its height from a function, but I'm not sure how it can be done, or if it can be done at all.
So I'm trying to do something like this, except, unfortunately, this produces an error:
list
{
column
{
width 100
label
{
area 0 0 10 getLabelHeight()
}
}
rowheight dynamic
}
function getLabelHeight()
{
return 200
}
Edit: I've also tried giving the label element a name and then using Infinity_SetArea() to change its height, but for some reason that didn't work either.
Edit 2: The same goes for Infinity_SetOffset() and adjustItemGroup(). Unfortunately, it seems that when inside a list, labels and handles just will not let you change their dimensions or position.
@Adul You can't call a function to set the area. And as you found, SetArea/SetOffset don't work for elements inside lists.
The only thing you can do is set the height to -1, it will adjust the height depending on the content. I don't know if it will be enough with what you want to do.
@Adul You can't call a function to set the area. And as you found, SetArea/SetOffset don't work for elements inside lists.
The only thing you can do is set the height to -1, it will adjust the height depending on the content. I don't know if it will be enough with what you want to do.
I've come up with two possible methods that I haven't tested yet, but neither would be very accurate, and they're both rather messy:
The first is to create a text field and add as many lines to it as needed to set the row to the approximate desired height.
The second method is to create many separate label elements with gradually incremental heights (e.g. increment the height of each one by 5 or 10 pixels) and enable only the one that's closest to the required height.
Needless to say, neither of these methods is nearly as good as it would be to be able to set an element inside the list to the exact required height, but unfortunately, I haven't been able to come up with a way to do that.
The first is to create a text field and add as many lines to it as needed to set the row to the approximate desired height.
Actually, it turns out this method can be pretty accurate if used with a font style that has a point size of 1. There could still be an unintended couple-of-pixels-tall variation in height, but otherwise, it works like a charm.
I handled this when I was trying to dynamically hide unused quickloot slots in my mod. What I did was to assign a lua function to a text attribute of a zero-sized button. In that function there are conditions that set areas of quickloot slots. It seems that the function inside text attribute is called all the time.
Do we know of any function to detect whether the game currently has focus (e.g. whether or not it's alt-tabbed out)?
I have a function that crashes the game when it's called while the game doesn't have focus, so I think I'll need some way to detect focus in order to fix it.
@Adul: From what I can tell, there isn't a function to detect window focus. In fact, the game engine itself doesn't even keep track of its focus; the only thing the engine does is set the global volume to 0 when it loses focus, and restores the volume to 100 when it regains focus.
I suppose if you could read the global volume, (which is separate from the volume sliders), you could technically tell if the window has focus, but of course there isn't anyway to read that value.
@Bubb Thanks for the answer! Luckily, I've realized I didn't need to have my elements call that function all the time, so this way I can get around the crash issue.
(By the way, it's the Infinity_GetArea function specifically that seems to crash the game when it's called while the game has no focus. Which might be a bug.)
Edit: Actually, I was wrong. I'm not entirely sure what causes the crash.
Is it possible to create extra buttons that function as action button, more specifically duplicates of the "smart spell" buttons where you can set any learned spell to them?
Looking in the default ui.menu it appears that the action bar is automatically populated, I assume the game determines what belongs in any given button based on class. However, I know that people managed to create a permanant thieving button; I wonder if there is a similar way to replicate that for the spell slots?
Context: I find caster characters very unweildy on tablet. I don't have access to a pc to use hotkeys or mods or write ai scripts to bind stuff. I can access and edit baldur.lua and any overrides, which means i can see the ui.menu.
I think the ideal would be to have a column of 10 or so buttons to the right of the left side menu all acting as dynamic spell slots like the ones on the action bar, but even if anyone has an idea of how to hardcode a button to cast a specific spell that would work too!
Thought I'd reply to myself incase anyone else is looking for an answer. Maybe its already in this thread but i didnt know what to look for.
If you get a basic copy of the UI.menu file into your override directory as described in this thread and search for "touchui", there are TONNES of options that still exist in the ui.menu file but have functionally been commented out (the line is something akin to "enabled e:not(touchui)"). Delete that line for any functionality you want.
This seems like a very strange decision since bluetooth exists, to require deleting that many lines to get back basic keyboard functionality, but whatever, alteast I didnt have to merge it in from a desktop version! I feel like the game should have the option on touch devices though, "Do you want to enable options for keyboard and mouse input?"
A question, is there any way to increase the scale of the boarding around the portraits on the right? So that the boarding can fit around the upscaled portrait images.
Keep in mind, I've only a vague idea on messing around with this stuff, so if it is doable, please explain as if to a child.
Hello, I've finally started to look into UI modding, the one part of modding I've never looked at before.
The ability to edit, redesign and add new art is really fun and so simple... but, I'm really struggling with anything else.
I've looked on every site I can think of for help, tutorials etc. - can anyone point me in the right direction?
Is there an IESDP equivalent for actions you perform in LUA?
To be more specific, I'm trying to add a game expansion to iwdee (like Black Pits) - I'd like to be able to do exactly what Black Pits does.. i.e. create a party, make a certain movie play, then start a new game in a new area.
Any help at all or just pointing me to where I can learn about scripting buttons or LUA functions (specific to IE engine), would be really appreciated.
Is there an IESDP equivalent for actions you perform in LUA?
A list of Infinity Lua Functions can be found here at the EEex Docs: EE Game Lua Functions - most are self describing, others might be less intuitive, but they haven't been expansively documented yet.
create a party, make a certain movie play, then start a new game in a new area.
You can also have a look at the EEex functions already created and listed on the EEex Docs: https://eeex-docs.readthedocs.io - the documentation is always work in progress, with information been added and edited as the project continues.
Is there an IESDP equivalent for actions you perform in LUA?
To be more specific, I'm trying to add a game expansion to iwdee (like Black Pits) - I'd like to be able to do exactly what Black Pits does.. i.e. create a party, make a certain movie play, then start a new game in a new area.
Any help at all or just pointing me to where I can learn about scripting buttons or LUA functions (specific to IE engine), would be really appreciated.
this can be already done without EEex. You can find the example code in EET: https://github.com/K4thos/EET/blob/master/EET/lib/bg2_GUI.tph
It will be easier for you to compare vanilla BG2:EE UI.MENU file with the one patched by EET and analyse what's different. Also start the game and press "Select campaign" button to see how it works in-game. In short EET replaces functions that initialize campaign startEngine:OnSoAButtonClick(true) / startEngine:OnToBButtonClick(true) / startEngine:OnTBPButtonClick(true) with a function introduced in SoD: startEngine:OnCampaignButtonClick('X',true) (where X matches the CAMPAIGN.2DA row label)
This way you can adjust data like starting location, XP etc.
I updated the EEex Docs: EE Game Lua Functions by adding the basic outline of all other lua functions defined in the game.
The categories added are:
buttonArray Functions
C (CLUAConsole) Functions
chapterScreen Functions
characterScreen Functions
connectionScreen Functions
createCharScreen Functions
createPartyScreen Functions
dlcScreen Functions
e Functions
game Functions
Infinity Functions
inventoryScreen Functions
journalScreen Functions
loadScreen Functions
mageScreen Functions
mapScreen Functions
mixer Functions
moviesScreen Functions
multiplayerScreen Functions
optionsScreen Functions
priestScreen Functions
projector Functions
saveScreen Functions
startEngine Functions
storeScreen Functions
timer Functions
worldMapScreen Functions
worldScreen Functions
If anyone wants to help fill in the details and add content, notes, examples, feel free to do so. There is a contributing guide for anyone that wants to.
Either way hopefully it is useful to others looking to mod the UI or the games.
Thankyou so much @Dee, I was easily able to increase game portrait boxes!
I get an error immediately when I start the game when using block comments to remove Set Party AI and Select All buttons in the bottom right.
The error is only cosmetic and the buttons are removed
[[-- button
{
area 0 110 72 55
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and not rightSidebarSmallButton"
toggle aiButtonToggle
bam GUILS10
sequence 10
tooltip lua "getPartyAITooltip()"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:ToggleAI()
"
}
button
{
area 0 165 72 55
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and not rightSidebarSmallButton"
bam GUILS10
sequence 13
tooltip lua "Infinity_FetchString(10485)"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:SelectAll()
"
actionDbl
"
game:CenterOnGroupLeader()
"
}
button
{
area 4 170 30 44
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and rightSidebarSmallButton"
toggle aiButtonToggle
bam GUILS10
sequence 16
tooltip lua "getPartyAITooltip()"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:ToggleAI()
"
}
button
{
area 36 170 30 44
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and rightSidebarSmallButton"
bam GUILS10
sequence 17
tooltip lua "Infinity_FetchString(10485)"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:SelectAll()
"
actionDbl
"
game:CenterOnGroupLeader()
"
} --]]
}
menu
{
name 'RIGHT_SIDEBAR_HIDDEN'
align right top
ignoreEsc
label
{
area 0 0 80 1
...
1) You can use the common CTRL+Z key command to "Undo" your last resize/move while in "F11" UI-Edit-Mode!
2) "Some smaller elements, though, may need to be enlarged before they can be moved. If you try hovering over the version number, for instance, you’ll notice that no matter where you put your mouse, you can’t get the entire rectangle to be blue.
So before we move it, we’ll need to make it bigger."
If your upper and lower borders turn green - DON'T click on it! Otherwise you'll "lock" this object (it becomes a yellow line/unmoveable/ height=0 - see screenshot).
Use CTRL+Z to easily restore it this.
Not sure if this has been mentioned before (lefreut posts?) but it's worth mentioning again
Comments
Edit:I found out what all the bars are for ^^
WIP EET Version of Swankified Hud
(and questions)
Hey All. A while ago I created a mod called Swankified Hud that was an extension on an old version of Dragonspear UI ++. So I'm working on a revamped Swankified UI for EET that doesn't require Dragonpear UI ++ (which isn't compatible with EET).
I got a few questions. Mainly, I rebuilt the Journal to be like a regular menu, but I can't figure out how to pause the game when it opens like the other menus. ie priest and mage scroll, inventory, and character sheet.
The other question is, I'm a bit confused about how to grey out or hide certain buttons when certain menus come up. I think because of the menu bar I set up I have to change that around quite a bit so it doesn't look broken when the clock disappears when a menu opens and stuff like that (see pics below).
If you guys are interested in checking the UI I'm working on out I'll post a few screens here so you can see.
I elected to stick with the original aspect ratio of the popup menus with the exception of the map, for scaling purposes, and so I could reuse stock SOD assets. The reason I made the map larger is that I find that bgtWorldmap mod's map is too large in scale and hard to navigate in a square viewport. ANYWAY Let me know what you think!
Screenshots
1. Reinstate the blue background for magical items in the mods two quickloot modes (expert and advanced).
2. Allow the dialogue box to be closed with the spacebar.
I have the ui.menu open but am unable to figure out what to change. Help please?
(I have asked in the mod's thread, but also wanted to ask here in hopes of getting help.)
In the photo above the arrows on the bottom row right should have a blue background, as they are not yet identified.
So I'm trying to do something like this, except, unfortunately, this produces an error:
list { column { width 100 label { area 0 0 10 getLabelHeight() } } rowheight dynamic } function getLabelHeight() { return 200 }
Edit: I've also tried giving the label element a name and then using Infinity_SetArea() to change its height, but for some reason that didn't work either.
Edit 2: The same goes for Infinity_SetOffset() and adjustItemGroup(). Unfortunately, it seems that when inside a list, labels and handles just will not let you change their dimensions or position.
Does anyone have any advice on this, please?
The only thing you can do is set the height to -1, it will adjust the height depending on the content. I don't know if it will be enough with what you want to do.
The first is to create a text field and add as many lines to it as needed to set the row to the approximate desired height.
The second method is to create many separate label elements with gradually incremental heights (e.g. increment the height of each one by 5 or 10 pixels) and enable only the one that's closest to the required height.
Needless to say, neither of these methods is nearly as good as it would be to be able to set an element inside the list to the exact required height, but unfortunately, I haven't been able to come up with a way to do that.
I have a function that crashes the game when it's called while the game doesn't have focus, so I think I'll need some way to detect focus in order to fix it.
I suppose if you could read the global volume, (which is separate from the volume sliders), you could technically tell if the window has focus, but of course there isn't anyway to read that value.
(By the way, it's the Infinity_GetArea function specifically that seems to crash the game when it's called while the game has no focus. Which might be a bug.)
Edit: Actually, I was wrong. I'm not entirely sure what causes the crash.
https://forums.beamdog.com/discussion/comment/1046868/#Comment_1046868
Looking in the default ui.menu it appears that the action bar is automatically populated, I assume the game determines what belongs in any given button based on class. However, I know that people managed to create a permanant thieving button; I wonder if there is a similar way to replicate that for the spell slots?
Context: I find caster characters very unweildy on tablet. I don't have access to a pc to use hotkeys or mods or write ai scripts to bind stuff. I can access and edit baldur.lua and any overrides, which means i can see the ui.menu.
I think the ideal would be to have a column of 10 or so buttons to the right of the left side menu all acting as dynamic spell slots like the ones on the action bar, but even if anyone has an idea of how to hardcode a button to cast a specific spell that would work too!
If you get a basic copy of the UI.menu file into your override directory as described in this thread and search for "touchui", there are TONNES of options that still exist in the ui.menu file but have functionally been commented out (the line is something akin to "enabled e:not(touchui)"). Delete that line for any functionality you want.
This seems like a very strange decision since bluetooth exists, to require deleting that many lines to get back basic keyboard functionality, but whatever, alteast I didnt have to merge it in from a desktop version! I feel like the game should have the option on touch devices though, "Do you want to enable options for keyboard and mouse input?"
Keep in mind, I've only a vague idea on messing around with this stuff, so if it is doable, please explain as if to a child.
The ability to edit, redesign and add new art is really fun and so simple... but, I'm really struggling with anything else.
I've looked on every site I can think of for help, tutorials etc. - can anyone point me in the right direction?
Is there an IESDP equivalent for actions you perform in LUA?
To be more specific, I'm trying to add a game expansion to iwdee (like Black Pits) - I'd like to be able to do exactly what Black Pits does.. i.e. create a party, make a certain movie play, then start a new game in a new area.
Any help at all or just pointing me to where I can learn about scripting buttons or LUA functions (specific to IE engine), would be really appreciated.
A list of Infinity Lua Functions can be found here at the EEex Docs: EE Game Lua Functions - most are self describing, others might be less intuitive, but they haven't been expansively documented yet.
@swit is looking to do something that is kind of related to your query, using EEex: https://forums.beamdog.com/discussion/comment/1102538/#Comment_1102538
You can also have a look at the EEex functions already created and listed on the EEex Docs: https://eeex-docs.readthedocs.io - the documentation is always work in progress, with information been added and edited as the project continues.
EEex can be downloaded from: https://github.com/Bubb13/EEex
It will be easier for you to compare vanilla BG2:EE UI.MENU file with the one patched by EET and analyse what's different. Also start the game and press "Select campaign" button to see how it works in-game. In short EET replaces functions that initialize campaign startEngine:OnSoAButtonClick(true) / startEngine:OnToBButtonClick(true) / startEngine:OnTBPButtonClick(true) with a function introduced in SoD: startEngine:OnCampaignButtonClick('X',true) (where X matches the CAMPAIGN.2DA row label)
This way you can adjust data like starting location, XP etc.
Thanks very much both - I felt like I'd hit a bit of a wall in UI modding, now I've got plenty to learn
The categories added are:
If anyone wants to help fill in the details and add content, notes, examples, feel free to do so. There is a contributing guide for anyone that wants to.
Either way hopefully it is useful to others looking to mod the UI or the games.
I get an error immediately when I start the game when using block comments to remove Set Party AI and Select All buttons in the bottom right.
The error is only cosmetic and the buttons are removed
{
area 0 110 72 55
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and not rightSidebarSmallButton"
toggle aiButtonToggle
bam GUILS10
sequence 10
tooltip lua "getPartyAITooltip()"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:ToggleAI()
"
}
button
{
area 0 165 72 55
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and not rightSidebarSmallButton"
bam GUILS10
sequence 13
tooltip lua "Infinity_FetchString(10485)"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:SelectAll()
"
actionDbl
"
game:CenterOnGroupLeader()
"
}
button
{
area 4 170 30 44
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and rightSidebarSmallButton"
toggle aiButtonToggle
bam GUILS10
sequence 16
tooltip lua "getPartyAITooltip()"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:ToggleAI()
"
}
button
{
area 36 170 30 44
enabled "worldScreen == e:GetActiveEngine() and showJournal == 0 and rightSidebarSmallButton"
bam GUILS10
sequence 17
tooltip lua "Infinity_FetchString(10485)"
clickable lua "sidebarsGreyed ~= 1"
action
"
game:SelectAll()
"
actionDbl
"
game:CenterOnGroupLeader()
"
} --]]
}
menu
{
name 'RIGHT_SIDEBAR_HIDDEN'
align right top
ignoreEsc
label
{
area 0 0 80 1
...
2) "Some smaller elements, though, may need to be enlarged before they can be moved. If you try hovering over the version number, for instance, you’ll notice that no matter where you put your mouse, you can’t get the entire rectangle to be blue.
So before we move it, we’ll need to make it bigger."
If your upper and lower borders turn green - DON'T click on it! Otherwise you'll "lock" this object (it becomes a yellow line/unmoveable/ height=0 - see screenshot).
Use CTRL+Z to easily restore it this.
Not sure if this has been mentioned before (lefreut posts?) but it's worth mentioning again