Da muss garnichts compiled werden...
Es liegt lediglich an ein paar Funktionen aus 2.2, die in 2.7 überholt wurden (mehr / weniger Parameter oder schlicht und ergreifend umbenannt).
Der Fehler liegt in den Clientside Scripts, nicht an python2.7
Da muss garnichts compiled werden...
Es liegt lediglich an ein paar Funktionen aus 2.2, die in 2.7 überholt wurden (mehr / weniger Parameter oder schlicht und ergreifend umbenannt).
Der Fehler liegt in den Clientside Scripts, nicht an python2.7
Danke für den Tip
Woher find ich es raus welche Funktionen da inbegriffen sind ?
Also entweder ihr fixt den fehler mit den Hex Literals direkt in der Python27.dll oder ihr ersetzt die ganzen color code hex literals durch grp.GenerateColor
0xRRGGBBAA oder 0xAARRGGBB
müsste es sein beim Format
Also entweder ihr fixt den fehler mit den Hex Literals direkt in der Python27.dll oder ihr ersetzt die ganzen color code hex literals durch grp.GenerateColor
0xRRGGBBAA oder 0xAARRGGBB
müsste es sein beim Format
Das ist der einzige Fehler ... sonst nichts
Kommt immer drauf an, wenn man beispielsweiße iwo md5 nutzt, so wird das in python22 über das module md5 gemacht während es ab python25 über hashlib geregelt wird.
Kommt immer drauf an, wenn man beispielsweiße iwo md5 nutzt, so wird das in python22 über das module md5 gemacht während es ab python25 über hashlib geregelt wird.
Danke an alle, die geholfen haben bzw. versucht haben zu helfen.
Schönen Abend euch allen.
Kommt immer drauf an, wenn man beispielsweiße iwo md5 nutzt, so wird das in python22 über das module md5 gemacht während es ab python25 über hashlib geregelt wird.
Metin2 benutzt allerdings kein MD5 in Python (meines Wissens nach).
Ich spreche hier davon ein Upgrade von Python 2.2 auf 2.7 vorzunehmen ... bei einem völlig unveränderten Client.
Das einzige Problem sind die Hex Literals (falls Metin2 nicht startet mit eurer Python2.7 DLL kompiliert sie ohne das site module neu ...) welche einfach durch grp.generatecolor ersetzt werden können.
Um dies ein wenig zu vereinfachen könnt ihr z.B auch
Code:
def StringColorToInt(colorstring):
import grp
colorstring = colorstring.strip()
if len(colorstring) != 8:
raise ValueError, "input #%s is not in #AARRGGBB format" % colorstring
a, r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:6],colorstring[6:8]
a, r, g, b = [int(n, 16) for n in (a, r, g, b)]
return grp.GenerateColor(float(r) / 255.0, float(g) / 255.0, float(b) / 255.0, float(a) / 255.0)
__builtin__.CTOA = StringColorToInt
in eure system.py einfügen.
dann einfach bei allen hex literals aus 0x12345678 CTOA("12345678")
Wenn ihr alle Hex Literals ersetzt habt sollte der Client mit der neuen DLL starten.
Das ist eine Methode ihr könnt es auch direkt in der DLL Fixxen.
Außer der Site Module Sache und der Hex Literal Sache müsst ihr nichts beachten. (ihr solltet natürlich den Python 2.7 Lib Ordner in den Lib ordner im Metin2 Hauptverzeichnis packen)
Metin2 benutzt allerdings kein MD5 in Python (meines Wissens nach).
Ich spreche hier davon ein Upgrade von Python 2.2 auf 2.7 vorzunehmen ... bei einem völlig unveränderten Client.
Das einzige Problem sind die Hex Literals (falls Metin2 nicht startet mit eurer Python2.7 DLL kompiliert sie ohne das site module neu ...) welche einfach durch grp.generatecolor ersetzt werden können.
Um dies ein wenig zu vereinfachen könnt ihr z.B auch
Code:
def StringColorToInt(colorstring):
import grp
colorstring = colorstring.strip()
if len(colorstring) != 8:
raise ValueError, "input #%s is not in #AARRGGBB format" % colorstring
a, r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:6],colorstring[6:8]
a, r, g, b = [int(n, 16) for n in (a, r, g, b)]
return grp.GenerateColor(float(r) / 255.0, float(g) / 255.0, float(b) / 255.0, float(a) / 255.0)
__builtin__.CTOA = StringColorToInt
in eure system.py einfügen.
dann einfach bei allen hex literals aus 0x12345678 CTOA("12345678")
Wenn ihr alle Hex Literals ersetzt habt sollte der Client mit der neuen DLL starten.
Das ist eine Methode ihr könnt es auch direkt in der DLL Fixxen.
Außer der Site Module Sache und der Hex Literal Sache müsst ihr nichts beachten. (ihr solltet natürlich den Python 2.7 Lib Ordner in den Lib ordner im Metin2 Hauptverzeichnis packen)
Es gibt allerdings das ein oder andere Release, das md5 mitbenutzt, daher hatte ich es eben erwähnt.
Habe das selbst nur 1x gepatcht und damals hatte ich eben ein md5 script mit eingebunden.
[Client-Release]Python2.2 zu Python2.3 02/01/2012 - Metin2 PServer Guides & Strategies - 27 Replies Hey,
ich mache für euch mal wieder ein kleines Mini-Release.
Habe die python23.dll so umgeschrieben, dass sie nicht mehr die ganze Syserr zuspammt, und euch mal die passenden lib´s für Python2.3 besorgt. Ich habe sie im Anhang hochgeladen. Kopiert die python23.dll einfach in den Client, und löscht den alten Ordner "lib" und ersetzt ihn mit dem aus dem Anhang. Sucht mit einem Hex-Editor in eurer .bin nach dem Text python22.dll und ersetzt ihn überall wo ihr in findet, durch python23.dll. Das...