-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutoTranslate.cs
More file actions
153 lines (136 loc) · 4.45 KB
/
Copy pathAutoTranslate.cs
File metadata and controls
153 lines (136 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace AutoTParser
{
//From Cacaroons AutoTranslate Voodoo
public static class AutoTranslate
{
private const byte lang = 0x02; //Engrish onry
private const string configFolder = "XML/";
public static Dictionary<uint, string> list = new Dictionary<uint, string>();
public static void Build()
{
int errorcount = 0;
string atStrings = configFolder + "auto_translates.xml";
string atItems = configFolder + "items.xml";
string atKeyItems = configFolder + "key_items.xml";
try
{
XDocument xStrings = XDocument.Load(atStrings);
foreach (XElement element in xStrings.Descendants().Where(p => p.HasElements == false))
{
uint id = GetFullStringID(Convert.ToUInt32(element.Attribute("id").Value));
string en = element.Attribute("en").Value;
list.Add(id, en);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
errorcount++;
}
try
{
XDocument xItems = XDocument.Load(atItems);
foreach (XElement element in xItems.Descendants().Where(p => p.HasElements == false))
{
uint id = GetFullItemID(Convert.ToUInt32(element.Attribute("id").Value));
string en = element.Attribute("en").Value;
list.Add(id, en);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
errorcount++;
}
try
{
XDocument xKeyItems = XDocument.Load(atKeyItems);
foreach (XElement element in xKeyItems.Descendants().Where(p => p.HasElements == false))
{
uint id = GetFullKeyItemID(Convert.ToUInt32(element.Attribute("id").Value));
string en = element.Attribute("en").Value;
list.Add(id, en);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
errorcount++;
}
if (errorcount > 0)
{
Console.WriteLine($"Finished with {errorcount} error(s). Some AutoTranslate tables were not completed");
}
else
{
Console.WriteLine("AutoTranslate tables completed from XMLs - Exporting to file");
}
}
private static uint GetFullStringID(uint value)
{
byte[] b =
{
02,
lang,
(byte)Math.Floor((double)value / 256),
(byte)(value % 256)
};
uint fullvalue = BitConverter.ToUInt32(b, 0);
return fullvalue;
}
private static uint GetFullItemID(uint value)
{
byte type = 0x07;
byte firstbyte = (byte)Math.Floor((double)value / 256);
byte secondbyte = (byte)(value % 256);
if (firstbyte == 0x00)
{
type = 0x09;
firstbyte = 0xFF;
}
else if (secondbyte == 0x00)
{
type = 0x0A;
secondbyte = 0xFF;
}
byte[] b =
{
type,
lang,
firstbyte,
secondbyte
};
uint fullvalue = BitConverter.ToUInt32(b, 0);
return fullvalue;
}
private static uint GetFullKeyItemID(uint value)
{
byte type = 0x13;
byte firstbyte = (byte)Math.Floor((double)value / 256);
byte secondbyte = (byte)(value % 256);
if (firstbyte == 0x00)
{
type = 0x15;
firstbyte = 0xFF;
}
else if (secondbyte == 0x00)
{
type = 0x16;
secondbyte = 0xFF;
}
byte[] b =
{
type,
lang,
firstbyte,
secondbyte
};
uint fullvalue = BitConverter.ToUInt32(b, 0);
return fullvalue;
}
}
}