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
|
# -*- coding: utf8 -*-
#
# Copyright (C) 2014 Evol Online
# Author: Andrei Karas (4144)
import re
from code.fileutils import *
from code.stringutils import *
def getConstsFile(srcDir):
files = os.listdir(srcDir)
for srcFile in files:
if srcFile.find("const") == 0 and srcFile[-4:] == ".txt":
yield srcDir + srcFile
def convertConsts(quests):
dstFile = "newserverdata/db/const.txt"
fieldsSplit = re.compile("\t+")
fields = dict()
vals = [("MF_NOTELEPORT", "mf_noteleport"),
("MF_NORETURN", "mf_noreturn"),
("MF_MONSTER_NOTELEPORT", "mf_monster_noteleport"),
("MF_NOSAVE", "mf_nosave"),
("MF_NOPENALTY", "mf_nopenalty"),
("MF_PVP", "mf_pvp"),
("MF_PVP_NOPARTY", "mf_pvp_noparty"),
("MF_PVP_NOCALCRANK", "mf_pvp_nocalcrank"),
("MF_NOWARP", "mf_nowarp"),
("MF_NOWARPTO", "mf_nowarpto"),
("MF_SNOW", "mf_snow"),
("MF_FOG", "mf_fog"),
("MF_SAKURA", "mf_sakura"),
("MF_LEAVES", "mf_leaves"),
("MF_TOWN", "mf_town"),
("sc_poison", "SC_POISON"),
("sc_slowpoison", "SC_SLOWPOISON")
]
with open(dstFile, "w") as w:
srcFile = "serverdata/db/const.txt"
with open(srcFile, "r") as r:
for line in r:
if len(line) < 2 or line[0:2] == "//":
continue
line = line.replace(" ", "\t")
rows = fieldsSplit.split(line)
sz = len(rows)
if sz < 2 or sz > 3:
continue
fields[rows[0]] = rows[1][:-1]
if sz == 2:
w.write("{0}\t{1}".format(rows[0], rows[1]))
else:
w.write("{0}\t{1}\t{2}".format(rows[0], rows[1], rows[2]))
# build in parameters
w.write("ClientVersion\t10000\t1\n");
srcDir = "oldserverdata/world/map/db/"
w.write("// tmw constants\n")
for srcFile in getConstsFile(srcDir):
with open(srcFile, "r") as r:
for line in r:
if len(line) < 2 or line[0:2] == "//":
continue
line = line.replace(" ", "\t")
rows = fieldsSplit.split(line)
if len(rows) != 2:
continue
for val in vals:
if rows[0] == val[0]:
rows[0] = val[1]
if rows[0] in quests:
rows[1] = str(quests[rows[0]]) + "\n"
if rows[0] in fields:
if fields[rows[0]] != rows[1][:-1]:
print "warning: different const values for {0} ({1}, {2})".format(rows[0], rows[1][:-1], fields[rows[0]])
else:
w.write("{0}\t{1}".format(rows[0], rows[1]))
|