|
You last visited: Today at 10:18
Advertisement
Help.. Quest Compilen
Discussion on Help.. Quest Compilen within the Metin2 Private Server forum part of the Metin2 category.
10/07/2015, 16:17
|
#1
|
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 ... !
|
|
|
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?
|
|
|
10/07/2015, 19:37
|
#3
|
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
|
|
|
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!
|
|
|
 |
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.
|
|