Jump to content


L2OFF Developer
  • Content Count

  • Joined

  • Last visited

  • Days Won

  • Feedback


eressea last won the day on November 1 2018

eressea had the most liked content!

Community Reputation

57 Excellent

About eressea

  • Rank

Contact Methods

  • Website URL

Profile Information

  • Current Mood
  • Gender
  • Country
    Czech Republic

Recent Profile Visitors

3,817 profile views
  1. There's no real pack (I'm developing only the extender) but you can use CT2.3 scripts (l2server_l2off_gracia_final_83) or "CT2.4" scripts (like https://l2-info.ru/pts/sborki-pts/12-l2-pts-epilogue.html)
  2. There are two classes in L2NPC - NpcMaker and NpcMakerEx (which is derived from NpcMaker) so NpcMakerEx is maker with some extended functionality
  3. We usually use Skype for chatting (at least me and people I communicate with)
  4. shared memory It simply returns CreatureData object for given NPC
  5. l2server_l2off_gracia_final_83 https://yadi.sk/d/JYEBBUcMPvy3o
  6. It's all stored in xstd::vectors etc so don't hesitate to remove all limits, everything is O(n) so it's up to server admins what they'll put there :)
  7. Files should be in separate directories. You don't need itemdata.txt.l2enc, just itemdata.txt. Download this, it will answer all your questions https://yadi.sk/d/JYEBBUcMPvy3o :)
  8. Update 2019-01-14: - fixed server crash, you should update as soon as possible - rewritten old parsers to new style (Boost.Spirit) parser - fixed calls to wcstol (NCsoft guys don't reset errno correctly so zero value may look like completely wrong value) which fixes error message about invalid eventdata.ini format - added custom static boss respawn feature (see examples) http://download.l2shrine.com/MyExt64.dll
  9. MyExt64 now supports script and html files in both UTF-16LE and UTF-8 encoding, if you find any bug, please let me know :)
  10. Hi, try this https://bitbucket.org/l2shrine/extender-public/commits/cacccdc12bf2e8b8c5c2b1579135f1298d5dc007 and let me know if it helped
  11. 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!"
  12. 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).