Pulentolento Posted April 10, 2017 Posted April 10, 2017 (edited) Hey Guys!! I have been using XDAT Editor to make new Windows. The problem I found and the lack of information of this software, I couldn't find on Internet anything of how to use this Script Console. I just found some samples of "SAVO" He shared long time ago on other RU forums. I know you can add windows, tabs, textures etc, etc, if you are using the GUI, but some times when your project is getting too big, better start using the Script Console. So, long story short, this is the problem: How to add a "TabElement" and filling it with some data information? for example this is the code I have been trying: println "Data Base Windows" xdat.windows.add(new Window( name: "DataBaseWnd", anchored: 0, size: 1, size_absolute_width: 800, size_absolute_height: 490, usePosition: 1, relativePoint: Alignment.TOP_LEFT, anchorPoint: Alignment.TOP_LEFT, parent: "undefined", backTex: "L2UI_CT1.Windows_DF_Large_Bg", script: "DataBaseWnd", state: "GamingState", frame: 1, hidden: 1, alwaysFullAlpha: 1, savePosition: 1, title: 6000, exitbutton: 1, workingConfiguration: "Game")) def DataBaseWnd = xdat.windows["DataBaseWnd"] DataBaseWnd.children.add(new Texture( name: "TexTabBg", parentName: "MagicSkillWnd", anchored: 0, size: 1, size_absolute_width: 800, size_absolute_height: 458, usePosition: 1, relativePoint: Alignment.TOP_LEFT, anchorPoint: Alignment.TOP_LEFT, anchor_y: 31.0, virtual: 1, file: "L2UI_CT1.tab.tab_df_bg", type: "Stretch", layer: "Background", alpha: -9999)) DataBaseWnd.children.add(new Texture( name: "TexTabBgLine", alwaysOnBack: 1, parentName: "MagicSkillWnd", anchored: 0, size: 1, size_absolute_width: 631, size_absolute_height: 30, usePosition: 1, relativePoint: Alignment.TOP_LEFT, anchorPoint: Alignment.TOP_LEFT, anchor_x: 164.0, anchor_y: 31.0, virtual: 1, file: "L2UI_CT1.tab.tab_df_bg_line", type: "Stretch", layer: "Background", alpha: -9999)) DataBaseWnd.children.add(new Tab( name: "DataBaseTabCtrl", parentName: "DataBaseWnd", anchored: 0, size: 1, size_absolute_width: 160, size_absolute_height: 23, usePosition: 1, relativePoint: Alignment.TOP_LEFT, anchorPoint: Alignment.TOP_LEFT, anchor_x: 8.0, anchor_y: 31.0)) def DataBaseTabCtrl = DataBaseWnd.children["DataBaseTabCtrl"] DataBaseTabCtrl.tabs[0].buttonName = 6001 DataBaseTabCtrl.tabs[0].target = "NpcDataTab" DataBaseTabCtrl.tabs[0].width = 78 DataBaseTabCtrl.tabs[0].height = 23 DataBaseTabCtrl.tabs[0].normalTex = "L2UI_CT1.tab.Tab_DF_Tab_Unselected" DataBaseTabCtrl.tabs[0].pushedTex = "L2UI_CT1.tab.Tab_DF_Tab_Selected" DataBaseTabCtrl.tabs[1].buttonName = 6002 DataBaseTabCtrl.tabs[1].target = "ItemDataTab" DataBaseTabCtrl.tabs[1].width = 78 DataBaseTabCtrl.tabs[1].height = 23 DataBaseTabCtrl.tabs[1].normalTex = "L2UI_CT1.tab.Tab_DF_Tab_Unselected" DataBaseTabCtrl.tabs[1].pushedTex = "L2UI_CT1.tab.Tab_DF_Tab_Selected" println "done!" And this is the error of the Script Console: Data Base Windows java.lang.NullPointerException: Cannot set property 'buttonName' on null object at org.codehaus.groovy.runtime.NullObject.setProperty(NullObject.java:80) at org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:195) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:484) at Script1.run(Script1.groovy:86) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:623) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:594) at acmi.l2.clientmod.xdat.scripting.Controller.lambda$execute$0(Controller.java:156) at acmi.l2.clientmod.xdat.scripting.Controller$$Lambda$442/1071997580.call(Unknown Source) at acmi.l2.clientmod.xdat.XdatEditor.lambda$execute$7(XdatEditor.java:219) at acmi.l2.clientmod.xdat.XdatEditor$$Lambda$209/1755738610.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) So, as you can see, the problem is when I'm trying to add some data information on "DataBaseTabCtrl". I hope someone have any clue or experience doing this process and it would be grateful share their knowledge to resolve this issue. thx so much guys!! Edited April 10, 2017 by Pulentolento
vampir Posted April 11, 2017 Posted April 11, 2017 Shouldnt buttonName value be a string? The best way of using those scripts is to create objects with UI on your own and then just copy automatically created script for later use. They are not perfect, if you make some modifications that collide with the script, it will not work well.
Akar0 Posted April 11, 2017 Posted April 11, 2017 (edited) According to groovy, its an INT static class TabElement implements IOEntity { @Sysstr int buttonName = -9999 String buttonNameText = 'undefined' String target = 'undefined' int width int height @Tex String normalTex = 'undefined' @Tex String pushedTex = 'undefined' boolean movable int gap @Sysstr int tooltip = -1 int noHighlight = -1 @Override String toString() { getClass().simpleName } Edited April 11, 2017 by Akar0
Akar0 Posted April 11, 2017 Posted April 11, 2017 (edited) Found the problem!!! ;D this is the right way to add a Tab Element with info: DataBaseTabCtrl.tabs.add(new Tab.TabElement( buttonName: 6001, target: "NpcDataTab", width: 78, height: 23, normalTex: "L2UI_CT1.tab.Tab_DF_Tab_Unselected", pushedTex: "L2UI_CT1.tab.Tab_DF_Tab_Selected")) Edited April 11, 2017 by Akar0
Recommended Posts