TERA API (node.js), Shop and Launcher with Client Patcher

Now that I got launcher and patcher working I am getting this error. This error comes up randomly.
 

Attachments

  • Messenger_creation_0e4cc058-68c7-4f8f-b88c-52c1a98b2ee6 - TERA API (node.js), Shop and Launcher with Client Patcher - RaGEZONE Forums
    Messenger_creation_0e4cc058-68c7-4f8f-b88c-52c1a98b2ee6.webp
    112.3 KB · Views: 45
I'm manualy translating my client to portuguese. So first I tried to add the _BRA or even _PTB on .env, but it never worked, even when I've put the DataCenter_Final_BRA.dat on server/update/client. I wont update, it says language doesnt exist or something.

So I decided to turn the German translation _GER into portuguese. Managed to change the flag, and already translated lots of texts. The issue is that now all the voices ingame are german :ROFLMAO:. And I didnt even used the _GER.dat. I've used the original _EUR.dat and just renamed it to _GER so the launcher would read it. I even tried copying the sounds package from EUR version and rename them as _GER and the original _GER to _GER2. But they're still speaking german.

Am I missing something? :unsure: Really wish the english language stayed default for the Portuguese translation.
hsdn - TERA API (node.js), Shop and Launcher with Client Patcher - RaGEZONE Forums

 
I'm manualy translating my client to portuguese. So first I tried to add the _BRA or even _PTB on .env, but it never worked, even when I've put the DataCenter_Final_BRA.dat on server/update/client. I wont update, it says language doesnt exist or something.

So I decided to turn the German translation _GER into portuguese. Managed to change the flag, and already translated lots of texts. The issue is that now all the voices ingame are german :ROFLMAO:. And I didnt even used the _GER.dat. I've used the original _EUR.dat and just renamed it to _GER so the launcher would read it. I even tried copying the sounds package from EUR version and rename them as _GER and the original _GER to _GER2. But they're still speaking german.
Once you change the client region, the client begins to use all the specific conditions associated with the specified region, and also uses gpk files associated with the region (including voices).

Therefore, if you use "GER" in the name of your data center file (and in .env of tera-api), you will hear German voice.
The sound files are in the Client\S1Game\CookedPC\Sound_Data\Packages folder, but most of the files are in the composite package, so you probably won't be able to just copy _EUR to _GER, but you can try.
 
Once you change the client region, the client begins to use all the specific conditions associated with the specified region, and also uses gpk files associated with the region (including voices).

Therefore, if you use "GER" in the name of your data center file (and in .env of tera-api), you will hear German voice.
The sound files are in the Client\S1Game\CookedPC\Sound_Data\Packages folder, but most of the files are in the composite package, so you probably won't be able to just copy _EUR to _GER, but you can try.
Hummm havent thought about the gpks. I'll try to use the _USA extension, maybe it will get the English USA idk instead of the EUR english, otherwise Ill just let it be in german in the end xD

Thanks for replying
 
Hummm havent thought about the gpks. I'll try to use the _USA extension, maybe it will get the English USA idk instead of the EUR english, otherwise Ill just let it be in german in the end xD

Thanks for replying

What about using KOR?

Check how it has to be implemented here and i think you can use it instead of GER

Then you only have to use DataCenter_Final.dat (just pack EUR DC with your modifications as DataCenter_Final.dat)

About the sounds, use the same as english but remove the extension _EUR if it exist.

1720575065267 - TERA API (node.js), Shop and Launcher with Client Patcher - RaGEZONE Forums
 
Last edited:
What about using KOR?

Check how it has to be implemented here and i think you can use it instead of GER

Then you only have to use DataCenter_Final.dat (just pack EUR DC with your modifications as DataCenter_Final.dat)

About the sounds, use the same as english but remove the extension _EUR if it exist.

View attachment 263637
I'll try it!

So the _USA wouldnt work? I'll try now with the KR instead

One last question, the .env dont support more than 4 languages? If I add the fake KOR can I put the GERMAN back and stay with 5 languages?
 
I'll try it!

So the _USA wouldnt work? I'll try now with the KR instead

One last question, the .env dont support more than 4 languages? If I add the fake KOR can I put the GERMAN back and stay with 5 languages?

It should work, but i'm unsure about sounds.
 
It should work, but i'm unsure about sounds.
Havent tried the sound because I havent talk to any NPC, as soon as I got to the hub/characters selection I saw that there was a encoding issue, sadly. When choosing KOR the portuguese special characters like ç, ã, é, í, ô, ê, á, à doesnt show and breaks the texts =/

EDIT: I may try to look at the font inside localization folders

Is there any .gpk extractor/repack for 100.02?
 
Havent tried the sound because I havent talk to any NPC, as soon as I got to the hub/characters selection I saw that there was a encoding issue, sadly. When choosing KOR the portuguese special characters like ç, ã, é, í, ô, ê, á, à doesnt show and breaks the texts =/

Is there any .gpk extractor/repack for 100.02?

Try editing the associated font file and redirect it to eur font instead

Edit Client\S1Game\Localization\INT\GFxUI.int

Replace all by,

Code:
[FontLib]
FontLib=fonts_eur.fonts_eur


[Fonts]
TitleFont=Astoria Medium,Normal
TitleFontB=Diverda Sans Com Medium,Normal
NormalFont=Diverda Sans Com Medium,Normal
NormalFont_B=Diverda Sans Com Medium,Bold
NormalFont_I=Diverda Sans Com Medium,Italic
NormalFont_BI=Diverda Sans Com Medium,Bold,Italic
NumberFont=Eurostile,Normal
ChatFont=Frutiger LT Pro 55 Roman,Normal
BasicFont=Noto Sans Med,Normal
BasicFont_B=Noto Sans,Bold


[IME]
MoviePath=GFxIME.IME


[Translation]
Enable=1


[Global]
No Trigger=No Trigger!

And try again.

Regarding the gpk files, the only know public tool is RealEditor

 
Is there any .gpk extractor/repack for 100.02?
- for editing GPK files and creating composite mods
- for creating CompositePackageMapper.dat file
- repacker/extractor for GPK files
 
I have added german language and it works apart from the tera shop, which is not translated: every category & item is [Unknown]
Even though i followed this guide

Is it outdated, because I didn't found share/dataitems-folder, which should be there for eng & rus language?
And where are the category & shop items strings, so I can check?

First I unpacked DataCenter_Final_GER.dat by novadrop of Archgeus (as shown in his video), then I copied the DataCenter_Final_GER folder to D:/TERA-Live100_02_TW/WebApi/share/dataitems/de

Afterwards I ran cmd as admin:
data items updater cmd1 - TERA API (node.js), Shop and Launcher with Client Patcher - RaGEZONE Forums


FYI: I use VM of Archgeus
 
I have added german language and it works apart from the tera shop, which is not translated: every category & item is [Unknown]
Even though i followed this guide

Is it outdated, because I didn't found share/dataitems-folder, which should be there for eng & rus language?
And where are the category & shop items strings, so I can check?

First I unpacked DataCenter_Final_GER.dat by novadrop of Archgeus (as shown in his video), then I copied the DataCenter_Final_GER folder to D:/TERA-Live100_02_TW/WebApi/share/dataitems/de

Afterwards I ran cmd as admin:
View attachment 263771

FYI: I use VM of Archgeus
You need to copy like that:
Code:
tera-api
└── share
    └── dataitems
        └── de
            ├── ItemConversion
            ├── ItemData
            ├── SkillIconData
            └── StrSheet_Item
 
I see, but there is some sql error?

Code:
D:\TERA-Live100_02_TW\WebApi>node src/tools/dataItemsUpdater.js de
Loading StrSheet files...
---> Loaded file StrSheet_Item-00000.xml with 34548 elements
---> Loaded file StrSheet_Item-00001.xml with 237 elements
---> Loaded file StrSheet_Item-00003.xml with 127 elements
---> Loaded file StrSheet_Item-00004.xml with 394 elements
---> Loaded file StrSheet_Item-00005.xml with 2243 elements
---> Loaded file StrSheet_Item-00006.xml with 547 elements
---> Loaded file StrSheet_Item-00007.xml with 6582 elements
---> Loaded file StrSheet_Item-00008.xml with 530 elements
---> Loaded file StrSheet_Item-00009.xml with 8782 elements
---> Loaded file StrSheet_Item-00010.xml with 618 elements
---> Loaded file StrSheet_Item-00011.xml with 19321 elements
---> Loaded file StrSheet_Item-00012.xml with 757 elements
---> Loaded file StrSheet_Item-00013.xml with 7189 elements
---> Loaded file StrSheet_Item-00014.xml with 715 elements
---> Loaded file StrSheet_Item-00015.xml with 6453 elements
---> Loaded file StrSheet_Item-00016.xml with 425 elements
---> Loaded file StrSheet_Item-00017.xml with 20915 elements
---> Loaded file StrSheet_Item-00018.xml with 3190 elements
---> Loaded file StrSheet_Item-00019.xml with 514 elements
---> Loaded file StrSheet_Item-00020.xml with 186 elements
Loading data files...
---> Loaded file ItemData-00000.xml with 34553 elements
---> Loaded file ItemData-00001.xml with 67 elements
---> Loaded file ItemData-00003.xml with 127 elements
---> Loaded file ItemData-00004.xml with 394 elements
---> Loaded file ItemData-00005.xml with 2221 elements
---> Loaded file ItemData-00006.xml with 547 elements
---> Loaded file ItemData-00007.xml with 6582 elements
---> Loaded file ItemData-00008.xml with 530 elements
---> Loaded file ItemData-00009.xml with 8782 elements
---> Loaded file ItemData-00010.xml with 618 elements
---> Loaded file ItemData-00011.xml with 19321 elements
---> Loaded file ItemData-00012.xml with 757 elements
---> Loaded file ItemData-00013.xml with 7189 elements
---> Loaded file ItemData-00014.xml with 715 elements
---> Loaded file ItemData-00015.xml with 6453 elements
---> Loaded file ItemData-00016.xml with 425 elements
---> Loaded file ItemData-00017.xml with 20915 elements
---> Loaded file ItemData-00018.xml with 3190 elements
---> Loaded file ItemData-00019.xml with 514 elements
---> Loaded file ItemData-00020.xml with 186 elements
Loading conversion files...
---> Loaded file ItemConversion-00000.xml with 493 elements
---> Loaded file ItemConversion-00001.xml with 531 elements
---> Loaded file ItemConversion-00002.xml with 565 elements
---> Loaded file ItemConversion-00003.xml with 1132 elements
---> Loaded file ItemConversion-00004.xml with 451 elements
---> Loaded file ItemConversion-00005.xml with 67 elements
---> Loaded file ItemConversion-00006.xml with 2277 elements
---> Loaded file ItemConversion-00007.xml with 110 elements
Loading SkillIcons files...
---> Loaded file SkillIconData-00000.xml with 3 elements
---> Loaded file SkillIconData-00001.xml with 4205 elements
---> Loaded file SkillIconData-00003.xml with 159 elements
---> Loaded file SkillIconData-00004.xml with 137 elements
---> Loaded file SkillIconData-00005.xml with 1222 elements
---> Loaded file SkillIconData-00006.xml with 522 elements
---> Loaded file SkillIconData-00007.xml with 168 elements
---> Loaded file SkillIconData-00008.xml with 477 elements
---> Loaded file SkillIconData-00009.xml with 96 elements
Adding strSheet elements...
0 / 114273 Added: 1
1 / 114273 Added: 2
2 / 114273 Added: 3
3 / 114273 Added: 4
4 / 114273 Added: 5
5 / 114273 Added: 6
6 / 114273 Added: 7
7 / 114273 Added: 8
8 / 114273 Added: 9
9 / 114273 Added: 10
10 / 114273 Added: 11
11 / 114273 Added: 12
12 / 114273 Added: 13
13 / 114273 Added: 14
14 / 114273 Added: 15
15 / 114273 Added: 16
16 / 114273 Added: 17
17 / 114273 Added: 18
18 / 114273 Added: 19
19 / 114273 Added: 20
20 / 114273 Added: 21
21 / 114273 Added: 22
22 / 114273 Added: 23
23 / 114273 Added: 24
24 / 114273 Added: 25
25 / 114273 Added: 26
26 / 114273 Added: 27
27 / 114273 Added: 28
28 / 114273 Added: 29
29 / 114273 Added: 30
30 / 114273 Added: 31
31 / 114273 Added: 32
32 / 114273 Added: 33
33 / 114273 Added: 34
34 / 114273 Added: 35
35 / 114273 Added: 36
36 / 114273 Added: 37
37 / 114273 Added: 38
38 / 114273 Added: 39
39 / 114273 Added: 40
40 / 114273 Added: 41
41 / 114273 Added: 42
42 / 114273 Added: 43
43 / 114273 Added: 44
44 / 114273 Added: 45
45 / 114273 Added: 46
46 / 114273 Added: 47
47 / 114273 Added: 50
48 / 114273 Added: 51
49 / 114273 Added: 52
50 / 114273 Added: 53
51 / 114273 Added: 54
52 / 114273 Added: 55
53 / 114273 Added: 56
54 / 114273 Added: 57
55 / 114273 Added: 59
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error
    at Query.run (D:\TERA-Live100_02_TW\WebApi\node_modules\sequelize\lib\dialects\mysql\query.js:52:25)
    at D:\TERA-Live100_02_TW\WebApi\node_modules\sequelize\lib\sequelize.js:315:28
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async MySQLQueryInterface.upsert (D:\TERA-Live100_02_TW\WebApi\node_modules\sequelize\lib\dialects\mysql\query-interface.js:43:12)
    at async Function.upsert (D:\TERA-Live100_02_TW\WebApi\node_modules\sequelize\lib\model.js:1533:20)
    at async D:\TERA-Live100_02_TW\WebApi\src\tools\dataItemsUpdater.js:154:3 {
  name: 'SequelizeDatabaseError',
  parent: Error: The table 'data_item_strings' is full
      at Packet.asError (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Execute.execute (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:456:32)
      at PacketParser.onPacket (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:85:12)
      at PacketParser.executeStart (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:92:25)
      at Socket.emit (node:events:527:28)
      at addChunk (node:internal/streams/readable:324:12)
      at readableAddChunk (node:internal/streams/readable:297:9)
      at Readable.push (node:internal/streams/readable:234:10) {
    code: 'ER_RECORD_FILE_FULL',
    errno: 1114,
    sqlState: 'HY000',
    sqlMessage: "The table 'data_item_strings' is full",
    sql: 'INSERT INTO `data_item_strings` (`language`,`itemTemplateId`,`string`,`toolTip`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `language`=VALUES(`language`),`itemTemplateId`=VALUES(`itemTemplateId`),`string`=VALUES(`string`),`toolTip`=VALUES(`toolTip`);',
    parameters: [
      'de',
      '60',
      'Gewöhnlicher Begleiter Tuwangi',
      'Prägt und aktiviert den Begleiterbalken, indem Ihr diesen Begleiter aus Eurem Inventar in das Fenster "Begleiter" im Aktivitätenmenü zieht. Über dieses Fenster könnt Ihr außerdem für die Ausbildung Eures Begleiters sorgen, um ihn dann zu beschwören und einzusetzen.'
    ]
  },
  original: Error: The table 'data_item_strings' is full
      at Packet.asError (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\packets\packet.js:728:17)
      at Execute.execute (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\commands\command.js:29:26)
      at Connection.handlePacket (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:456:32)
      at PacketParser.onPacket (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:85:12)
      at PacketParser.executeStart (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\packet_parser.js:75:16)
      at Socket.<anonymous> (D:\TERA-Live100_02_TW\WebApi\node_modules\mysql2\lib\connection.js:92:25)
      at Socket.emit (node:events:527:28)
      at addChunk (node:internal/streams/readable:324:12)
      at readableAddChunk (node:internal/streams/readable:297:9)
      at Readable.push (node:internal/streams/readable:234:10) {
    code: 'ER_RECORD_FILE_FULL',
    errno: 1114,
    sqlState: 'HY000',
    sqlMessage: "The table 'data_item_strings' is full",
    sql: 'INSERT INTO `data_item_strings` (`language`,`itemTemplateId`,`string`,`toolTip`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `language`=VALUES(`language`),`itemTemplateId`=VALUES(`itemTemplateId`),`string`=VALUES(`string`),`toolTip`=VALUES(`toolTip`);',
    parameters: [
      'de',
      '60',
      'Gewöhnlicher Begleiter Tuwangi',
      'Prägt und aktiviert den Begleiterbalken, indem Ihr diesen Begleiter aus Eurem Inventar in das Fenster "Begleiter" im Aktivitätenmenü zieht. Über dieses Fenster könnt Ihr außerdem für die Ausbildung Eures Begleiters sorgen, um ihn dann zu beschwören und einzusetzen.'
    ]
  },
  sql: 'INSERT INTO `data_item_strings` (`language`,`itemTemplateId`,`string`,`toolTip`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `language`=VALUES(`language`),`itemTemplateId`=VALUES(`itemTemplateId`),`string`=VALUES(`string`),`toolTip`=VALUES(`toolTip`);',
  parameters: [
    'de',
    '60',
    'Gewöhnlicher Begleiter Tuwangi',
    'Prägt und aktiviert den Begleiterbalken, indem Ihr diesen Begleiter aus Eurem Inventar in das Fenster "Begleiter" im Aktivitätenmenü zieht. Über dieses Fenster könnt Ihr außerdem für die Ausbildung Eures Begleiters sorgen, um ihn dann zu beschwören und einzusetzen.'
  ]
}

Node.js v18.2.0

D:\TERA-Live100_02_TW\WebApi>
 
Guys, the _KOR language disable the TERA Shop? Tried to put it with my portuguese translation, but it ended up not opening the TERA Shop window (Using the _EUR, just renamed to DataCenter_Final.dat)
 
Guys, the _KOR language disable the TERA Shop? Tried to put it with my portuguese translation, but it ended up not opening the TERA Shop window (Using the _EUR, just renamed to DataCenter_Final.dat)

Jmmm, i completely forgot about that.

Check AwesomiumWeb.xml (Client side) and add KOR to the id 1

<UIWindow id="1" type="shop" title="@AwesomiumWeb:1" imageHeight="550" imageWidth="740" localization="EUR,FRA,GER,TW,CN,RUS,USA,KOR" useSession="false" />
 
Jmmm, i completely forgot about that.

Check AwesomiumWeb.xml (Client side) and add KOR to the id 1

<UIWindow id="1" type="shop" title="@AwesomiumWeb:1" imageHeight="550" imageWidth="740" localization="EUR,FRA,GER,TW,CN,RUS,USA,KOR" useSession="false" />
hmm there is no .xml with this name on Gameforge client (100.02), or is it inside some gpk?
 
I think my sql error is because C drive has 0 bytes of 100 GB free and D drive has 3,8 GB of 60 GB free. Need to re-evaluate pagefile.
 
Last edited:
Back