Jump to content

Recommended Posts

Posted (edited)

​In this guide, I'll explain you how to edit Interface.u

  • ​​0) Prerequisites

​Before going further, you need some basics about development, about variables, functions, and so on. If you don't have, learn before, then come back here after !
​You also will use a lot of Hexa, be ready with it.
​L2 uses UnrealTournament Renderer/Engine.
Any client modification could be bannable by server owners. Be careful about it. If you wanna try some mods freely, install a L2J server on your computer.

​​Also, you'll need some extra software (all free).
​First one, is L2encdec, in order to decryp L2 files. If you don't know it, then L2 editing/modding will be hard. I'll not provide any link about it, but it can be found in any FileEdit software.
​Second, you'll need 'UT Package Tool' (aka UTPT). Here : http://www.acordero.org/projects/unreal-tournament-package-tool/
​Then, any Hex Editor ( XVI32 is a good one, but you can prefer Hex Workshop, google them to find a link, prefer latest version).

​And finally, you'll need a documentation, about UT scripting : https://mega.nz/#!jph2yZrS!CJpX9zLAK5ibG3CDWsjfN97KTycsY5WGRVDZ8xzFDy0
Read it, especially from page 27 - Script Format. READ IT ! READ IT !

Ok, lets go :
 

  • 1) Decrypt L2 file

​Un-encrypt your interface.u :

Use CMD, l2encdec.exe -d interface.u
Write down (notepad) the "Header" version, in my case, Lineage2Ver111
A new file dec-interface.u will be created
 

  • 2) Find the script

Open UTPT, then open your interface.u
Go in the "Export Tree" tab, right click, full collapse.
Then, you'll have to choice what you wanna edit.
For this guide, I'll modify the "Rank Name" under the "Name" of a Target.
So, the script to edit will be in "TargetStatusWnd", in the "HandleTargetUpdate". Right click on it, then "Decompile". You'll see the current script. If you understand nothing about it, STOP, learn about development before !!
Save the full script in a txt file. (select all, copy, open notepad, paste, save)
Find the line you wanna change, in my case, it's "NameRank = GetUserRankString(Info.nUserRank);" . I wanna change it to something like : "NameRank = GetClassType(Info.nClassID);"
In order to find what functions are available to use, go to the "Name Table" tab. About vars or attributes (nClassID in my case), I didn't found any relevant list, but we will see after (in §4).
In the "Export Table" tab, in your current selected script ("HandleTargetUpdate" in my case), right click, then  "Analise Raw Object". A  Hex table (read only) will appear. Here is the magic <3
In the menu, "Format then Auto Format". The Hex table will be 'sorted' by script lines. Find the line you wanna modify, by hovering all 'bubbles' If the interface is messed up, "Auto Format" again.
When you found it, write down (notepad) the full Hex digits related to your line. In my case, it's "0F 00 65 0D 1C C8 0D 36 E4 0D 00 5F 02 16", which refers to "NameRank = GetUserRankString(Info.nUserRank);"

  • 3) Decode the Hex data

Here is the hardest part of this guide.
​You now have to decode this Hex values, according to the PDF doc. Did you read it before ?? :)

​In the last step, we ended with a Hex data : 0F 00 65 0D 1C C8 0D 36 E4 0D 00 5F 02 16
​In my case, 0F means EX_Let, so, the data after will be assigned to the right part.
​00 means EX_LocalVariable, so the next 2 bytes will be the left part of my expression. 6F0D is my local variable (NameRank in my case).
​1C means EX_FinalFunction, so the next 2 bytes will be the address of a function. C80D is my function (GetUserRankString in my case).
36 means EX_StructMember, so a member of an object. The following 2 bytes will be the member. E40D is the member (nUserRank in my case).
00 means EX_LocalVariable, and it will be also the object (as it follows a EX_StructMember without declared object). 5F02 is my object (Info in my case).
16 is EX_EndFunctionParms, so the end of my function ( a closing parenthesis sign )

In my case, C80D will be changed, and E40D. First one is my function, 2nd one is the member of the Info object.
 

  • 4) Replace

How to find the references to replace ?
You'll have to find other existing scripts where the functions and variable you wanna substitutes are present. Decompile scripts with UTPT where functions/variables can be found (according to the retail L2 interface).
For me, as it's related to classes, I thought that it could be present in the "DetailStatusWnd.UpdateInterface" script (as it's related to the "Character Status" (Alt + T) window)
So decompile it with UTPT, then, use the "Find" function. When you found a interesting line, Analise Raw Object, Auto Format, found the Hex values related to the line, and decode it (see point 3)
In my case, I found for the variable nSubClass the following Hex value : DC 0B, and for the function GetClassStr this Hex value : E5 0B
So, C80D should be replaced with E50B and E40D by DC0B.

 

​You can use this archive https://mega.nz/#!e4AVkQKJ!d2Q7n0pFfh_mumUG7NLV193BJXlwSXhSIiS-6EZSh8U containing all H5 scripts from .u files, to see what functions/variables are existing.

  • 5) Hex editor and Crypt

Open your Hex editor. Find the initial Hex full value, and replace the Hex values according to point 4.
Save. Encrypt with l2encdec, replace the <version> in the following CMD command by the version you wrote down on point 1 (111 in my case)
l2encdec.exe -h <version> dec-interface.u
(in my case, it will be : l2encdec.exe -h 111 dec-interface.u)
A new enc-dec-interface.u will be created.
 

  • 6) Verify and Test

Open the new file (enc-dec-interface.u) with UTPT, open the target script, Decompile it, and verify that it's OK. (copy all the script text, save on txt file, check with WinMerge against the same script, but from the initial file (point 1) could be a good solution)
In your L2 client folder, delete the initial interface.u file, copy the new one (enc-dec-interface.u), rename it to interface.u
Open your L2 client, and check :)

 

 

 

Hope It will help ppl.

Any comment in this topic will be helpful to improve it !

I'll maybe add some pics later. Let me know if pics are important to understand.

Edited by Etuldan
Posted

​Hmm ?

​I wrote this guide from scratch.

​From what 'original' guide are you talking ?

​I didn't steal any content, from another website or other.

Do you have any proof about this original guide ? I guess no.

Posted

Should you send some screens with your modifications ? iam only searching for some cool and usefull modifications for IL, but its looks like i must make my own interface, so if you can up some screens it will be so cool.

BTW: if you have any interfaces can you send me in message link or screen ? :) Thx a lot :)

Posted (edited)

​@Stajirek :

​ATM, I'm only testing some things (as I'm new about interface.u editing, and I wrote this guide as soon as I understood the main part). I'm still not yet an expert in heavy modification.

​The example used for the guide was H5, but it should be equivalent for any Chronicle.

​Also, an xDat editing will be mostly required along an interface.u editing ( .u file : script, xdat : layout)

6wZS4NAu0cXu.png

​(yes, the target is a fighter, as GM I changed his class to check the modification in the TergetWnd)

Edited by Etuldan
Posted

Iam interested About interlude. I Just saw interface from nephoreon and i really like How he remake that Adena and place in iventory etc. I have no idea How to make that things but im Just going learn How to work with that by your guide and then i will try make something "like him" :D

  • 2 weeks later...
  • 2 weeks later...
  • 3 months later...
Posted

One question, if for example I want to remove a bit of hex code will it work? (im testing things out since it's the first itme i try it and i try to replace NameRank = GetUserRankString(Info.nUserRank); with NameRank = Info.Name;

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • L2 Kings    Stage 1 – The Awakening Dynasty and Moirai Level Cap: 83 Gear: Dynasty -Moirai & Weapons (Shop for Adena + Drop from mobs/instances ) Masterwork System: Available (Neolithics S required with neolithics u can do armor parts foundation aswell) Class Cloaks: Level 1 - Masterwork sets such us moirai/dynasty stats are boosted also vesper(stage 2) Olf T-Shirt: +6 (fails don’t reset) safe is +2 Dolls: Level 1 Belts: Low & Medium Enchant: Safe +3 / Max +8 / Attribution Easy in Moirai-Dynasty . Main Zones: Varka Outpost: Easy farm, Adena, EXP for new players = > 80- 100kk hour Dragon Valley: Main farm zone — , 100–120kk/hour Weapon Weakness System active (all classes can farm efficiently) Archers get vampiric auto-hits vs mobs Dragon Valley Center: Main Party Zone — boosted drops (Blessed enchants, Neolithics chance) => farm like 150-200kk per hour. Dragon Valley North: Spoil Zone (Asofe + crafting materials for MW) Primeval Isle: Safe autofarm zone (low adena for casual players) ==> 50kk per hour Forge of the Gods & Imperial Tomb: Available from Stage 1 (lower Adena reward in compare with Dragon Valley) Hellbound also avaliable from stage 1 In few words all zones opened but MAIN farm zone with boosted adena and drops is Dragon valley also has more mobs Instances: Zaken (24h Reuse) → Instead of Vespers drop Moirai , 100% chance to drop 1 of 9 dolls lvl 1, Zaken 7-Day Jewelry Raid Bosses (7 RBs): Drop Moirai Parts + Neolithic S grade instead of Vespers parts that has 7 Rb Quest give Icarus Weapons Special Feature 7rb bosses level up soul crystals aswell. Closed Areas : Monaster of SIlence, LOA, ( It wont have mobs) / Mahum Quest/Lizardmen off) Grand Epics: Unlocked on Day 4 of Stage 1 → Antharas, Valakas, Baium, AQ, etc ================================================================================= Stage 2 – Rise of Vespers Level Cap: 85 Gear: Moirai Armors (Adena GM SHOP / Craft/ Drop) Weapons: Icarus Cloaks: Level 2 Olf: +8 Dolls: Level 2 Belts: High & Top Enchant: Safe +3 / Max +8 Masterwork can be with Neolithics S84 aswell but higher so craft will be usefull aswell. 7 Raid Boss Quest Updated: Now works retail give vesper weapons 7rb Bosses Drops : Vespers Instances: Zaken : Drops to retail vespers + the dolls and the extra items that we added on stage 1 New Freya Instance: Added — drops vespers and instead of mid s84 weapons will drop vespers . Extra drops Blessed Bottle of Freya - drops 100% chance 1 of 9 dolls. Farm Areas Dragon Valley remains main farm New Zone : Lair of Antharas (mobs nerfed and added drop Noble stone so solo players can farm too) New Party Zone : LOA Circle   ============================================================================   Stage 3 – The Vorpal ERA Gear: Vorpal Unclock Cloaks: Level 3 Olf: +10 (max cap) Dolls: Level 3 Enchant: Safe +3 / Max +12 Farm Zones : Dragon Valley Center Scorpions becomes a normal solo zone (no longer party zone) Drops:   LOA & Knorik → Mid Weapons avaliable in drop New Party Zone Kariks Instances: Easy Freya Drops Mid Weapons Frintezza Release =================================================================================     Stage 4 – Elegia Era (Final Stage) Elegia Unlock Gear: Elegia Weapons: Elegia TOP s84 ( farmed via H-Freya/ Drops ) Cloaks: Level 5 Dolls: Level 3 (final bonuses) Enchant: Safe +6 / Max +16 Instances: Hard Freya → Drops Elegia Weapons + => The Instance will drop 2-3 parts for sure and also will be able to Join with 7 people . Party Zone will have also drop chances for elegia armor parts and weapons but small   Events (Hourly): Win: 50 Event Medals + 3 GCM + morewards Lose: 25 Medals + 1 GCM + more rewards Tie: 30 Medals + 2 GCM + more rewards   ================================================================================ Epic Fragments Currency Participating in Daily Bosses mass rewarding all players Participating in Instances (zaken freya frintezza etc) all players get reward ================================================================================ Adena - Main server currency (all items in gm shop require adena ) Event Medals (Festival Adena) - Event shop currency Donation coins you can buy with them dressme,cosmetics and premium account Epic Fragments you can buy with them fake epic jewels Olympiad Tokens you can buy many items from olympiad shop (Hero Coin even items that are on next stages) Olympiad Win = 1000 Tokens / Lose = 500 Tokens ================================================================================= Offline Autofarm Allows limited Offline farming requires offline autofarm ticket that you get by voting etc ================================================================================= Grand Epics have Specific Custom NPC that can spawn Epics EU/LATIN TIME ZONE ================================================================================= First Olympiad Day 19 December First Heroes 22 December ( 21 December Last day of 1st Period) After that olympiad will be weekly. ================================================================================= Item price and economy Since adena is main coin of server and NOT donation coins we will always add new items in gm shop with adena in order to burn the adena of server and not be inflation . =================================================================================        
    • Hello, I'd like to change a title color for custom npc.  I created custom NPC, cloned existing. I put unique id for it in npcname-e, npcgrp and database. I have "0" to serverSideName in db, so that it would use npcname-e, but instead it has "NoNameNPC"and no title color change.
    • Trusted Guy 100% ,  I asked him for some work and he did it right away.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock