rteshima Posted December 4, 2018 Share Posted December 4, 2018 some program to decode ai.obj in epilogue grace? use the l2off gm panel and do not walk Quote Link to comment Share on other sites More sharing options...
0 eressea Posted December 4, 2018 Share Posted December 4, 2018 Hi, decompiler: https://maxcheaters.com/topic/222869-lineage-2-gf-ai-decompiler/ compiler: https://maxcheaters.com/topic/211530-gracia-final-ai-compiler-nasc-by-l2shrinecom/ Quote Link to comment Share on other sites More sharing options...
0 rteshima Posted December 4, 2018 Author Share Posted December 4, 2018 The decompiler could execute it and modify the files that I wanted, but the compiler does not work for me. Quote Link to comment Share on other sites More sharing options...
0 eressea Posted December 7, 2018 Share Posted December 7, 2018 On 12/5/2018 at 12:38 AM, rteshima said: The decompiler could execute it and modify the files that I wanted, but the compiler does not work for me. You need one single NASC source file in UTF-16LE encoding, then it should work fine. If you're using split and/or UTF-8 options in decompiler, you'll have to write some script that will join and recode that into one single UTF-16LE file (in correct order). Quote Link to comment Share on other sites More sharing options...
0 rteshima Posted December 7, 2018 Author Share Posted December 7, 2018 uhh so complicated: / .. It might be that I'm not working because they are advext files? Quote Link to comment Share on other sites More sharing options...
0 eressea Posted December 10, 2018 Share Posted December 10, 2018 On 12/7/2018 at 4:58 PM, rteshima said: uhh so complicated: / .. It might be that I'm not working because they are advext files? I replied you in mail but as someone else might need it, I'll copy my response here as well: Hi, it should run on Win Vista and newer and the single input NASC file has to be UTF-16LE. I personally use split AI structure which looks like this C:/l2/ai-src/default_npc.nasc C:/l2/ai-src/default_npc/citizen.nasc C:/l2/ai-src/default_npc/citizen/merchant.nasc C:/l2/ai-src/default_npc/citizen/merchant/bandor.nasc ... all these files are in UTF-8 without BOM (Byte Order Mask) I also have NASC there: C:/l2/nasc/compile.bat C:/l2/nasc/l2npc/l2npc.exe ... I join it, recode it to UTF-16LE and compile it with C:/l2/make.py: #!/usr/bin/env python # (C) 2017 L2Shrine.com # Usage: # # If you need just some classes, run "make.py" and let it compile everything that's not up to date # If you need to compile whole ai to get full ai.obj for server, run "make.py all" from os import walk, stat, getcwd, system, mkdir, unlink from codecs import open from sys import stderr, argv from glob import glob makeAll = False if len(argv) == 1: pass elif len(argv) == 2: if argv[1] == "all": makeAll = True else: print >> stderr, "Usage: %s [all]" % (argv[0], ) raise SystemExit(1) else: print >> stderr, "Usage: %s [all]" % (argv[0], ) raise SystemExit(1) if makeAll: aiFilename = "ai" else: aiFilename = "tmp" cwd = getcwd() def createPath(s): if s.startswith(u"\\\\?\\"): return s.replace("/", "\\") return u"\\\\?\\%s\\%s" % (cwd, s.replace("/", "\\"), ) files = [] for path, dirnames, filenames in walk(createPath("ai-src")): for i in filenames: srcPath = createPath("%s/%s" % (path, i, )) objPath = createPath("%s/%s" % (path[:len(cwd)+4] + path[len(cwd)+4:].replace("\\ai-src", "\\ai", 1), i.replace(".nasc", ".txt"), )) statSrc = stat(srcPath) try: if makeAll: raise Exception() statObj = stat(objPath) except: statObj = None if statObj == None or max(statSrc.st_ctime, statSrc.st_mtime) >= max(statObj.st_ctime, statObj.st_mtime): files.append(srcPath) if not files: print "Everything up to date" raise SystemExit(0) try: unlink("%s.obj" % (aiFilename, )) except: pass fw = open("%s.nasc" % (aiFilename, ), "w", "utf-16le") required = set(files) written = set() if not makeAll: print >> stderr, "Going to compile:" for i in files: if not makeAll: print >> stderr, " %s" % (i.replace("\\", "/").split("/")[-1], ) parts = i[len(createPath("ai-src/")):].replace("\\", "/").split("/") for j in xrange(len(parts)): if j != len(parts) - 1: filename = createPath("ai-src/%s.nasc" % ("/".join(parts[:j+1]), )) else: filename = createPath("ai-src/%s" % ("/".join(parts[:j+1]), )) if filename not in written: fw.write(open(filename).read()) written.add(filename) fw.close() print >> stderr, "Compiling %d sources..." % (len(files), ) result = system("cd nasc && compile.bat ..\\%s.nasc" % (aiFilename, )) err = glob("nasc/l2npc/log/err/*-01-npc*.log") if err and len(open(err[0], "r").read()) > 0 or result > 0: print >> stderr, "Compilation failed" raise SystemExit(1) curClass = None fw = None classes = [{}, {}] outputDir = "ai" for line in open("%s.obj" % (aiFilename, ), "r", "utf-16le"): line = line.strip("\n").strip("\r") if line.startswith("class"): if curClass == None: lineSplit = line.split() curClass = lineSplit[2] path = [] if lineSplit[4] != "(null)": classes[int(lineSplit[1])][curClass] = lineSplit[4] parent = lineSplit[4] while True: path.append(parent) parent = classes[int(lineSplit[1])].get(parent) if parent == None: break path.append(outputDir) path.reverse() try: mkdir(createPath("/".join(path))) except WindowsError, e: if e.winerror != 183: raise path.append(curClass) srcFilename = u"%s.nasc" % (createPath("/".join(path)), ) srcFilename = srcFilename[:len(cwd)+4] + srcFilename[len(cwd)+4:].replace("%s\\" % (outputDir, ), "ai-src\\", 1) if srcFilename in required: filename = "%s.txt" % (createPath("/".join(path)), ) fw = open(filename, "w") else: curClass = None if fw != None: print >> fw, line if curClass == None and fw != None: fw.close() fw = None if not makeAll: #unlink("%s.nasc" % (aiFilename, )) # uncomment this if you don't need single NASC file #unlink("%s.obj" % (aiFilename, )) # uncomment this if you don't need ai.obj file pass print >> stderr, "Done!" Quote Link to comment Share on other sites More sharing options...
0 Hitcher Posted June 25, 2019 Share Posted June 25, 2019 On 12/10/2018 at 4:38 PM, eressea said: make.py Please tell about these python files ... where can I find them? Quote Link to comment Share on other sites More sharing options...
0 eressea Posted June 25, 2019 Share Posted June 25, 2019 2 hours ago, Hitcher said: Please tell about these python files ... where can I find them? http://download.l2shrine.com/nasc.tar.gz Quote Link to comment Share on other sites More sharing options...
0 Hitcher Posted June 25, 2019 Share Posted June 25, 2019 thank You very much! love You.=) Quote Link to comment Share on other sites More sharing options...
Question
rteshima
some program to decode ai.obj in epilogue grace? use the l2off gm panel and do not walk
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.