Jump to content

Recommended Posts

Posted (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 by Pulentolento
Posted

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.

Posted (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 by Akar0
Posted (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 by Akar0
Guest
This topic is now closed to further replies.


  • Posts

    • NEW HIDDENSTASH KEY SYSTEM INTRODUCED TO THE SITE   **Earn While You Spend - Introducing HS Cashback!**   Every purchase on our site now rewards you with **HS Keys cashback**   EVERY ONE WHO REGISTERS IN SITE UNTILL 15TH OF MAY GETS 2000 HS KEYS IN HES BALANE   Here's how it works:       **1 USD = 1000 HS Keys**   **Get 3% cashback** on every purchase   **Use your HS Keys to **save on your next order**   ---   ### ⚡ Why this is awesome   * Every order gives you value back   * Stack it with promos & HS usage   * Turn your spending into future discounts   ---   ### Example   Spend **$10** → Get **300 HS Keys** back   Spend **$50** → Get **1500 HS Keys** back   ---   ### Smart system (built for fairness)   * Cashback is rounded to keep things balanced   * Prevents abuse from tiny orders   * Rewards real buyers   ---   ### Start earning now   Every purchase = progress toward your next discount   Shop now and build your HS balance!   #cashback #gamingdeals #d2r #rewards #loyalty   Stay safe out there, heroes - and happy hunting! www.d2rhiddenstash.com     We just launched our new Affiliate Program — and it’s the easiest way to earn HS Keys.   Invite your friends using your personal link.   Example: If your friend spends $10 → you get 300 HS Keys No limits. No effort. Just share your link.   Get your referral link here: www.d2rhiddenstash.com/profile     Start earning today
    • https://jumpshare.com/share/L45ApA5PVrGN2O5Ua5pQ   Skill synchronization with the server: Launching and synchronizing animations, launching and synchronizing effects. All of this is tied to the server's timing  
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..