Jump to content

Xdat Editor Using Script Console


Recommended Posts

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 by Pulentolento
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Akar0
Link to comment
Share on other sites

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 by Akar0
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...