Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 10:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Help.. Quest Compilen

Discussion on Help.. Quest Compilen within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1

 
Drαεth's Avatar
 
elite*gold: 35
Join Date: Jan 2014
Posts: 1,421
Received Thanks: 268
Help.. Quest Compilen

Code:
Traceback (most recent call last):
  File "make_quest", line 10, in <module>
    r = pre_qc.run (line)
  File "/usr/home/game/share/locale/germany/quest/pre_qc.py", line 159, in run
    start = MakeParameterTable (lines, parameter_table, keys)
  File "/usr/home/game/share/locale/germany/quest/pre_qc.py", line 149, in MakeParameterTable
    return start
UnboundLocalError: local variable 'start' referenced before assignment
... Help?!

Ich wollte einfach mal wieder meine Quests reloaden, zack .. das :'D
Und nein ich hab nichts falsch gemacht ... !
Drαεth is offline  
Old 10/07/2015, 18:11   #2
 
elite*gold: 183
Join Date: Feb 2010
Posts: 597
Received Thanks: 221
Quote:
File "/usr/home/game/share/locale/germany/quest/pre_qc.py", line 159, in run
start = MakeParameterTable (lines, parameter_table, keys)
File "/usr/home/game/share/locale/germany/quest/pre_qc.py", line 149, in MakeParameterTable
return start
Was steht in dein Zeilen 159 und 149?
Cynaide™ is offline  
Old 10/07/2015, 19:37   #3

 
Drαεth's Avatar
 
elite*gold: 35
Join Date: Jan 2014
Posts: 1,421
Received Thanks: 268
HTML Code:
# -*- coding: 949 -*-
# 말 그대로 pre qc.
# 우리 퀘스트 언어에는 지역 변수만이 있고,
# state나, 심지어 when, function을 아우르는 전역 변수를 사용할 수 없다.
# 전역 '변수'의 사용은 언어의 구조상 사용이 불가하고, 별 의미가 없다.
# 하지만 전역 '상수'의 사용은 퀘스트 view 상으로 꼭 필요하기 때문에,
# fuction setting () 과 같은 함수를 이용하여, 
# 매번 테이블을 생성하여 전역 상수를 흉내내어 사용하였다.
# 이는 매우 비효율적이므로,
# c의 preprocesser와 같이 pre qc를 만들어 전역 상수를 사용할 수 있도록 하였다.
# 퀘스트를 qc로 컴파일 하기 전에 pre_qc.py를 통과하면,
# pre_qc.py는 define 구문을 처리하고, 그 결과를
# pre_qc/filename에 저장한다.

import sys

def split_by_quat (buf):
	p = False
	l = list (buf)
	l.reverse()
	s = ""
	res = []
	while l:
		c = l.pop()
		if c == '"':
			if p == True:
				s += c
				res += [s]
				s = ""
			else:
				if len (s) != 0:
					res += [s]
				s = '"'
			p = not p
		elif c == "\\" and l[0] == '"':
			s += c
			s += l.pop()
		else:
			s += c
	
	if len (s) != 0:
		res += [s]
	return res

def AddSepMiddleOfElement (l, sep):
	l.reverse()
	new_list = [l.pop()]
	while l:
		new_list.append (sep)
		new_list.append (l.pop())
	return new_list

def my_split_with_seps(s, seps):
	res = [s]
	for sep in seps:
		new_res = []
		for r in res:
			sp = r.split (sep)
			sp = AddSepMiddleOfElement (sp, sep)
			new_res += sp
		res = new_res
	new_res = []
	for r in res:
		if r != '':
			new_res.append (r)
	return new_res

def my_split(s, seps):
	res = [s]
	for sep in seps:
		new_res = []
		for r in res:
			sp = r.split (sep)
			new_res += sp
		res = new_res
	new_res = []
	for r in res:
		if r != '':
			new_res.append (r)
	return new_res
def MultiIndex (list, key):
	l = []
	i = 0
	for s in list:
		if s == key:
			l.append (i)
		i = i + 1
	return l

def Replace (lines, parameter_table, keys):
	r = []
	for string in lines:
		l = split_by_quat (string)
		for s in l:
			if s[0] == '"':
				r += [s]
			else:
				tokens = my_split_with_seps (s, ["\t", ",", " ", "=", "[", "]",'-','<','>','~','!','.','(',')'])
				for key in keys:
					try:
						idices = MultiIndex(tokens, key)
						for i in idices:
							tokens[i] = parameter_table[key][0]
					except:
						pass
				r += tokens
	return r

def MakeParameterTable(lines, parameter_table, keys):
	names = []
	values = []
	group_names = []
	group_values = []
	idx = 0
	for line in lines:
		idx += 1
		line = line.strip("\n")
		if (-1 != line.find("--")):
			line = line[0:line.find("--")]
		
		tokens = my_split(line, ["\t", ",", " ", "=", "[", "]", "\r", "\n"])
		if len(tokens) == 0:
			continue
		if cmp (tokens[0], "quest") == 0:
			start = idx
			break
		if cmp (tokens[0], "define") == 0:
			if cmp (tokens[1],  "group") == 0:
				group_value = []
				for value in tokens[3:]:
					if parameter_table.get(value, 0) != 0:
						value = prameter_table[value]
					group_value.append (value)
				parameter_table [tokens[2]] = group_value
				keys.append(tokens[2])
			elif len(tokens) > 5:
				print "%d %s" % (idx, "Invalid syntax")
				print "define [name] = [value]"
				print "define group [name] = \"[\"[v0],[v1], ... \"]\""
			else :
				if tokens[1] == "rgd_kill_num":
					print "fucking"
				value = tokens[2]
				if parameter_table.get(value, 0) != 0:
					value = prameter_table[value]
				parameter_table[tokens[1]] = [value]
				keys.append (tokens[1])
	parameter_table = dict (zip (group_names, group_values))
	return start------------------------- HIER

def run(filename):
	parameter_table = dict()
	keys = []

	filename = filename.strip("\n")
	if filename == "":
		return
	lines = open (filename).readlines()
	start = MakeParameterTable (lines, parameter_table, keys)------------------ HIER
	if len (keys) == 0:
		return False

	lines = lines [start-1:]
	r = Replace (lines, parameter_table, keys)
	f = file ("pre_qc/"+filename, "w")
	for s in r:
		 f.write(s)
	return True

Ganz unten.... <.< Die Zeilen Wo ich ein
------ HIER
dahinter geschrieben habe :'D

€dit:

#gefixxt
Drαεth is offline  
Old 12/23/2015, 12:56   #4
 
elite*gold: 0
Join Date: Mar 2010
Posts: 510
Received Thanks: 89
Ich habe das gleiche Problem...
Bitte melden!
paulo113 is offline  
Reply


Similar Threads Similar Threads
Probleme beim Quest compilen
08/25/2012 - Metin2 Private Server - 0 Replies
Wenn ich die make.sh oder auch die make.py ausführen will kommt folgender fehler: /quest/qc: Undefined symbol "_ZNSt24__default_alloc_templateILb1ELi0EE8al locateEj"
Quest "Compilen" geht nichtmehr
11/22/2011 - Metin2 Private Server - 7 Replies
Hey, sobald ich meine Quest compilen will, kommt immer core dumoped, obwohl die Quest auf keinerlei Weise fehlerhaft ist, dieser Fehler tritt auch nur auf, wenn ich mehr als eine Quest in der quest_list habe, bei einer compilet er sie ohne Probleme. Lg
Compilen
08/06/2011 - Flyff Private Server - 1 Replies
Hallo, dass ist vielleicht eine dumme Frage aber wie compiled man? Danke schon einmal im Vorraus :D
Compile all quest without quest's files list // Kompilieren Sie alle Quest ohne Quest
07/17/2011 - Metin2 PServer Guides & Strategies - 3 Replies
ENGLISH Hello dear community, this is a very simple guide but at the same time useful. How to compile ALL quest in the folder "quest" without the files list in the file "locale_list"? Easy! Open the file "make" and replace the content of the file with this: for f in *.quest; do ./qc $f; done Oki. Now set the 0777 permission to the file. Finally open a SSH client and sign in. Write the command: cd /game_file_folder



All times are GMT +1. The time now is 10:21.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.