diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-09-16 20:55:28 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-09-16 20:55:28 +0300 |
commit | d27db8cca78e06582d8372a9d05f6483202c26ba (patch) | |
tree | b0cd0384dc86d822ecf5a233ddbe2d046ea19585 /hercules/code/servertoclient/luas.py | |
parent | d71aa7d6d7203e5408730cfd86d5f402e0e17a4a (diff) | |
download | tools-d27db8cca78e06582d8372a9d05f6483202c26ba.tar.gz tools-d27db8cca78e06582d8372a9d05f6483202c26ba.tar.bz2 tools-d27db8cca78e06582d8372a9d05f6483202c26ba.tar.xz tools-d27db8cca78e06582d8372a9d05f6483202c26ba.zip |
Add parsing for some RO formats.
Parsing act files and start of parsing spr files (for monsters)
Diffstat (limited to 'hercules/code/servertoclient/luas.py')
-rw-r--r-- | hercules/code/servertoclient/luas.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/hercules/code/servertoclient/luas.py b/hercules/code/servertoclient/luas.py new file mode 100644 index 0000000..6399da6 --- /dev/null +++ b/hercules/code/servertoclient/luas.py @@ -0,0 +1,55 @@ +# -*- coding: utf8 -*- +# +# Copyright (C) 2015 Evol Online +# Author: Andrei Karas (4144) + +import re +from sets import Set + +from code.fileutils import * +from code.stringutils import * + +comaSplit = re.compile(",") +equalSplit = re.compile("=") + +def extractLuaArray(fileName, arrName): + with open(fileName, "r") as f: + for line in f: + if line.find(arrName) == 0: + line = line[line.find("{") + 1:] + line = line[:line.find("}")] + return line + return "" + +def convertJobName(): + jobs = dict() + jobNameFile = "rodata/decompiled/jobname.lua" + line = extractLuaArray(jobNameFile, "JobNameTable") + arr = comaSplit.split(line) + for itemStr in arr: + parts = equalSplit.split(itemStr.strip()) + if parts[0].find("[jobtbl.") == 0: + key = parts[0].strip() + key = key[8:-1].strip() + val = parts[1].strip() + val = val[1:-1].strip() + jobs[key] = val + return jobs + +def convertIdentity(jobs): + idents = dict() + npcIdentityFile = "rodata/decompiled/npcidentity.lua" + line = extractLuaArray(npcIdentityFile, "jobtbl = ") + arr = comaSplit.split(line) + for itemStr in arr: + parts = equalSplit.split(itemStr.strip()) + key = parts[0].strip() + val = parts[1].strip() + if key in jobs: + idents[val] = jobs[key].lower() + return idents + +def convertLuas(): + jobs = convertJobName() + idtofile = convertIdentity(jobs) + return idtofile |