Jump to content

Recommended Posts

Posted

Work but can't edit l2.ini  (work with glory days, lindvior but not work with Epeisodion , Valiance)

yes you can edit the l2.ini

 

btw if you want to play the official server with a custom l2.ini or user.ini etc..., you will need a patched l2.exe so you do not get an error.

 

You could also create a file with the extension .cmd, for example l2.cmd and add this

 

start L2.exe -INI=l2x.ini -USERINI=Userx.ini -ng

 

then create 2 files l2x.ini and Userx.ini (if you want infinite zoom and more stuff) and copy the information of the original files inside.

Finally rename the file l2.bin to l2.exe.

 

You can now edit the custom userx.ini l2x.ini with notepad and without modifying the original files (use the l2.cmd to run the game).

 

example with infinite zoom and CacheSizeMegs=128

Posted (edited)

Thank you very much :)

 

If you are interested to teach / explain how to make those DDF files I am interested !

 

I listed there the files missing / not updated yet :) 

 

AbilityPoint.dat

ActionName-e.dat (got a strange output, but working)

AdditionalJewelEquipEffect

AdditionalNpcGrpParts

AdditionalSoulshotEffect

Edited by ptitlaby
Posted

Thank you very much :)

 

If you are interested to teach / explain how to make those DDF files I am interested !

 

I listed there the files missing / not updated yet :)

 

AbilityPoint.dat

ActionName-e.dat (got a strange output, but working)

AdditionalJewelEquipEffect

AdditionalNpcGrpParts

AdditionalSoulshotEffect

 

Copy ActionName-e data in excel is better to edit, from FileEdit is a total mess.

 

AbilityPoint.dat, AdditionalJewelEquipEffect, AdditionalNpcGrpParts and AdditionalSoulshotEffect this files are new in valiance so i need to make them from 0, It's a little more difficult.

 

About how to fix a ddf. here some tips

 

1) you need to read the l2disarm manual inside L2FileEdit\data\l2asm-disasm fold (do not continue until you understand)

 

2) Generally from a chronic to another, the ddf structure changes little, they often remove or add extra fields only. I will not explain much here just pay attention to the error in the FileEdit out, for example:
    | File scan error:
| | Row: 0/7180
| | Field: 26/70 (name: m_HumnFigh)

So before the field 26 you need to figure out what is missing or what to delete in ddf...

 

anyway to make a ddf from 0 you can start with the structure we will see below. Make a ddf file with the name of the data file than you want, for example hairExName-e.ddf and copy this.

FS = "\t"; 
HEADER = 1; 
RECCNT = 1; 
MTXCNT_OUT = 1; 
MATCNT_OUT = 1; 
ORD_IGNORE = 0; 
{ 
   UINT ROWS_NUM;
   CHAR UNK[200]; // <--- you can edit this value (200) if you need more or less info
}

We will always focus on the first row. for this, we need to set the option RECCNT to 1 (set it back to -1 when we are done).

the output will be a series of numbers that will have no meaning. The first number has to be ignored, this number tells the FileEdit, how many rows has the data, and only appears when the option RECCNT is set with a value other than -1 (this number will bring us a lot of problems later).

Now your job is to look for patterns like those shown in the table below. Up to you, find out what type these numbers belong (INT, HEX, FLOAT, UNICODE, ASCF, etc..)

 

211rx1z.png

 

So an INT type, is formed by 4 CHAR so the tags id and id2 could be 

//(the U before INT, means it is a unsigned number)
UINT id; 
UINT id2; 

The tag  "Name" is easy to recognize as a unicode, the first 4 numbers (a INT = 30) are the header, so the next 30 numbers form words ("Devoted Macho A") So we will use this

UNICODE Name;

The tag "html_color" is not so easy to recognize becose the header is a CHAR number in this case 80. The first 80 numbers form words, usually ends with the number 0.

ASCF Html_Color;

our final ddf would have the following structure

FS = "\t"; 
HEADER = 1; 
RECCNT = -1; 
MTXCNT_OUT = 1; 
MATCNT_OUT = 1; 
ORD_IGNORE = 0; 
{ 
   UINT id;
   UINT id2;
   UNICODE Name;
   ASCF Html_Color;
}

this would be an easy example. But there are cases where ddf structure is very complicated and the information we obtain from the first row will not be enough.

For these cases we will try to get the basic structure, same way as we did above, then set RECCNT to 2 3 ... n until we find errors like

    | File scan error:
| | Row: 20/7180
| | Field: 26/70 (name: m_HumnFigh)

and so modify the dff with new information from these errors.

 

PD: I forgot to mention, how to evade value containing the row number, well I'll just say, it is necessary to use the function "ENBBY", if you learn to use this function, you can do anything (Manual).

Posted

Thank you very much for this little guide, there are far more information that what I ever find on the internet.

 

I will try my best so, if I post anything that will be because I mastered it :D

  • 4 weeks later...
Posted (edited)

yes you can edit the l2.ini

 

btw if you want to play the official server with a custom l2.ini or user.ini etc..., you will need a patched l2.exe so you do not get an error.

 

You could also create a file with the extension .cmd, for example l2.cmd and add this

 

start L2.exe -INI=l2x.ini -USERINI=Userx.ini -ng

 

then create 2 files l2x.ini and Userx.ini (if you want infinite zoom and more stuff) and copy the information of the original files inside.

Finally rename the file l2.bin to l2.exe.

 

You can now edit the custom userx.ini l2x.ini with notepad and without modifying the original files (use the l2.cmd to run the game).

 

example with infinite zoom and CacheSizeMegs=128

 

 

that can work in l2.eu core server? i guess there is another way to do it because the only way to open the lineage 2 is via the website... have u ever tryed to do it there?

Edited by charliedvm
Posted (edited)

that can work in l2.eu core server? i guess there is another way to do it because the only way to open the lineage 2 is via the website... have u ever tryed to do it there?

for this to work you need to open the game from the l2.exe, and as you know, is not possible on l2.eu or at least I do not know how :)

Edited by Allengc
Posted

for this to work you need to open the game from the l2.exe, and as you know, is not possible on l2.eu or at least I do not know how :)

patched archives don't work in EU, it gives error when trying to open the L2 so it's impossible to patch and edit the archives, there is a way to edit them (add zoom etc) without patching it? so it will still work?...

  • 2 weeks later...
Posted (edited)

Hello allengc I don't see more online, where are you? anyway what about npcgrp.dat of God En? it can be opened, can you please check? here is npcgrp.dat of English Client Godess Of Destruction, ok thanks a lot for all your support and you have my msn, you can talk me there, thanks.

 

https://www.dropbox.com/s/aoif4aczd9rnhca/Npcgrp.dat

Edited by CriticalError
  • 1 month later...
Posted (edited)

Since few weeks I am having some troubles with the last Skillgrp.dat file from Valiance update  :

 


|   | L:\Lineage II\Tools\L2FileEdit\temp>"l:\lineage ii\tools\l2fileedit\data\l2asm-disasm\l2disasm.exe" -d skillgrp.ddf -e skillgrp-new.ddf dec-skillgrp.dat skillgrp.txt 
|   | 
|   | hL2disasm 1.4.1 by M.Soltys (aka DStuff).
|   | 
|   | File scan error:
|   |   row: 49531 / 89942
|   |   field: 17 / 23 (name: extra_eff)
|   | 
|-->--------------------

Here is the file I am using : http://l2.laby.fr/files/Skillgrp.dat . Does any of you found a solution ? Since It is not occuring on first row, I am not really sure on how this changed

Edited by ptitlaby
Posted

Since few weeks I am having some troubles with the last Skillgrp.dat file from Valiance update  :

 

Here is the file I am using : http://l2.laby.fr/files/Skillgrp.dat . Does any of you found a solution ? Since It is not occuring on first row, I am not really sure on how this changed

 

Since few weeks I am having some troubles with the last Skillgrp.dat file from Valiance update  :

 

Here is the file I am using : http://l2.laby.fr/files/Skillgrp.dat . Does any of you found a solution ? Since It is not occuring on first row, I am not really sure on how this changed

change the line INT newCounter2; to  UNICODE UNK_4; (link updated btw)

Posted (edited)

Since few weeks I am having some troubles with the last Skillgrp.dat file from Valiance update  :

 

Here is the file I am using : http://l2.laby.fr/files/Skillgrp.dat . Does any of you found a solution ? Since It is not occuring on first row, I am not really sure on how this changed

 

I'm using 010 editor to analyze the DAT structure, here is the template I wrote: (You have to make your own template for every DAT)

010 editor is very powerful on analyzing DAT file.

typedef struct {
    unsigned byte unknow;
    if(unknow & 0x40)
        unsigned byte unknow2;
    if(unknow != 0)
        if(unknow & 0xc0)
            wstring s;
        else
            string s;
} ASCF;

typedef struct {
    unsigned int size;
    if (size > 0)
        uchar s[size];
} UNICODE;

typedef struct {
    if(Count != 0){
    local int k;
for(k = 1; k<= Count; ++k)
    UNICODE items[Count];
}

} CNTRI;

typedef struct {
    unsigned int skill_id;
    unsigned int skill_level;
    unsigned int oper_type;
    unsigned int UNK_0;
    unsigned int mp_consume;
    unsigned int cast_style;
    signed int cast_range;
    unsigned int UNK_1;
    float hit_time[3];
    signed int is_magic;
    unsigned int UNK_2[3];
    unsigned int Count;
    UNICODE UNK_B;
        CNTRI ani_char_0;
	CNTRI desc;
    UNICODE icon_name;
    UNICODE icon_name2;
    unsigned int extra_eff;   
    unsigned int is_ench;
    unsigned int ench_skill_id;
    unsigned int hp_consume;
    ASCF nonetext2;
    signed int UNK_4[4];
    ASCF nonetext3;
 
} RECORD;

unsigned int number_of_record;
local int i;
for(i = 1; i<= number_of_record; ++i)
    RECORD r;

 Transformed to DDF:

//early version submitted by Allen (L2Sexi Server)
FS = "\t";
HEADER = 1;
RECCNT = OFF;
MTXCNT_OUT = 1;
MATCNT_OUT = 1;
ORD_IGNORE = 0;

{
	UINT skill_id;
	UINT skill_level;
	UINT oper_type;
	UINT UNK_0;
	UINT mp_consume;
	UINT cast_style;
	INT cast_range;
	UINT UNK_1;
	FLOAT hit_time[3];
	INT is_magic;
	UINT UNK_2[3];
        UINT cnt;
         UNICODE UNK_B;
	UNICODE ani_char[cnt];
	UNICODE desc[cnt];
	UNICODE icon_name;
	UNICODE icon_name2;
	UINT extra_eff;
	UINT is_ench;
	UINT ench_skill_id;
	UINT hp_consume;
	ASCF nonetext1;
	INT UNK_3[4];
	ASCF nonetext2;
}

Edited by syncia

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...