summaryrefslogtreecommitdiff
path: root/hercules/code/servertoclient/luas.py
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-09-16 20:55:28 +0300
committerAndrei Karas <akaras@inbox.ru>2015-09-16 20:55:28 +0300
commitd27db8cca78e06582d8372a9d05f6483202c26ba (patch)
treeb0cd0384dc86d822ecf5a233ddbe2d046ea19585 /hercules/code/servertoclient/luas.py
parentd71aa7d6d7203e5408730cfd86d5f402e0e17a4a (diff)
downloadtools-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.py55
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