urllib2 & python2.7

09/04/2013 16:34 _e°m²~7#16
Wieso müssen die Dateien aus dem root/uiscript denn compiliert werden ?
09/04/2013 17:31 xCPx#17
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
09/04/2013 19:07 _e°m²~7#18
Quote:
Originally Posted by xCPx View Post
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 ?
09/05/2013 09:07 xCPx#19
Ausprobieren.
Solange syserrs fixxen bis keine mehr kommt.
09/05/2013 10:37 .Alpha.#20
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
09/05/2013 14:25 xCPx#21
Quote:
Originally Posted by .Nova. View Post
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.
09/05/2013 21:41 _e°m²~7#22
Quote:
Originally Posted by xCPx View Post
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.
09/05/2013 21:51 MartPwnS#23
Heißt in der theorie müsste das gehen wenn ich das mache was nova geschrieben hat oder wurde sonst noch was an den strukturen geändert?
09/06/2013 05:39 .Alpha.#24
Quote:
Originally Posted by xCPx View Post
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)
09/08/2013 14:34 xCPx#25
Quote:
Originally Posted by .Nova. View Post
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.
04/16/2014 00:39 °~Dennis~°#26
Hm nutze auf eine Client Binary mit upgrade auf 2.7 wenn ich dann eine gruppe erstellen will schließt sich das fenster und das kommt bei raus:

PartyMemberInfoBoard.__LoadBoard.LoadScript - <type 'exceptions.OverflowError'>:Python int too large to convert to C long