Jump to content
×
×
  • Create New...

C++ - Upgrade Python de 2.2 en 2.7


Recommended Posts

  • Retraité

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

 

Introduction

 

Dans ce tutoriel, je vais vous apprendre à changer la version de Python sur votre client Metin2, Python 2.2 à Python 2.7. Pour cela vous aurez besoin de vos sources clients et de pouvoir les compiler. Cette amélioration permet d'augmenter légèrement la vitesse du client pour peu de modifications internes.

 

Pré-requis

 

 

I. Migration

Révélation

 

A. Mise en place des fichiers

Révélation

 

Ouvrez l'archive et ajoutez comme il se doit les différents fichiers :

 

  • Includes
  • Bibliothèques
  • Extension d'application

 

Et remplacez votre dossier lib dans votre client par celui fourni.

 

 

B. Modification des Sources

Révélation

 

Pour cela, je vous laisse suivre mes instructions :

 

A. UserInterface / UserInterface.cpp

Révélation

 

Remplacez :

#pragma comment( lib, "python22.lib" )

Par :

#pragma comment( lib, "python27.lib" )

 

 

B. ScriptLib / PythonLauncher.cpp

Révélation

 

Remplacez :

#include <Python-2.2/frameobject.h>

Par :

#include <Python-2.7/frameobject.h>

 

 

C. ScriptLib / PythonLauncher.h

Révélation

 

Remplacez :

#include <Python-2.2/frameobject.h>

Par :

#include <Python-2.7/frameobject.h>

 

 

D. ScriptLib / PythonMarshal.cpp

Révélation

 

Remplacez :

#include <Python-2.2/longintrepr.h>

Par :

#include <Python-2.7/longintrepr.h>

 

 

E. ScriptLib / StdAfx.h

Révélation

 

Remplacez :

#include <Python-2.2/python.h>
#include <Python-2.2/python.h>
#include <Python-2.2/node.h>
#include <Python-2.2/grammar.h>
#include <Python-2.2/token.h>
#include <Python-2.2/parsetok.h>
#include <Python-2.2/errcode.h>
#include <Python-2.2/compile.h>
#include <Python-2.2/symtable.h>
#include <Python-2.2/eval.h>
#include <Python-2.2/marshal.h>

Par:

#include <Python-2.7/python.h>
#include <Python-2.7/python.h>
#include <Python-2.7/node.h>
#include <Python-2.7/grammar.h>
#include <Python-2.7/token.h>
#include <Python-2.7/parsetok.h>
#include <Python-2.7/errcode.h>
#include <Python-2.7/compile.h>
#include <Python-2.7/symtable.h>
#include <Python-2.7/eval.h>
#include <Python-2.7/marshal.h>

 

 

Succès ! Votre client dispose maintenant de la version 2.7 de Python !

 

 

 

II. Adaptation

Révélation

 

Ici, vous apprendrez à corriger une erreur qui va survenir une fois la manipulation faite : Python int too large to convert to C long, dû à la différence de longueur de la liste...

A. Fonction de Conversion

Révélation

 

Ajoutez à votre fichier system.py :

def StringColorToInt(colorstring):
	import grp
	colorstring = colorstring.strip()
	if len(colorstring) != 10:
		raise ValueError, "input #%s is not in #0xAARRGGBB format" % colorstring
	a, r, g, b = colorstring[2:4], colorstring[4:6], colorstring[6:8],colorstring[8:10]
	a = int(a, 16)
	r = int(r, 16)
	g = int(g, 16)
	b = int(b, 16)
	return grp.GenerateColor(float(r) / 255.0, float(g) / 255.0, float(b) / 255.0, float(a) / 255.0)

__builtin__.CTOA = StringColorToInt

 

 

B. Mise en place de la Conversion 

Révélation

 

Pour cela, vous allez devoir convertir tous les codes couleur hexadécimal qui sont situés dans les fichiers python du Uiscript, du root et du locale, grâce à la fonction définie précédemment. Par exemple, 0x0DA2E9D9 deviendra CTOA("0x0DA2E9D9"). Pour cela vous pouvez les chercher à l'aide d'un éditeur classique, il commence tous par 0x.

 

Attention ! il faut que les codes soient des codes hexadécimaux, donc avec des chiffres 0-9 et des lettres allant de A à F, par exemple 0xFFFFFFFL n'est pas un code couleur !
Info. Utiliser la fonction recherche grâce à une expressions régulières d'un logiciel plus poussé comme Notepad++ qui vous permettra de tous les corriger d'un coup !

 

 

 

Succès ! Votre client est maintenant prêt pour Python 2.7 !

 

Pour continuer

 

Si vous avez un problème n'hésitez pas à poster votre demande d'aide dans l'AQS

Source MT2Dev / Kijaru

  • Funky Emulation 6
  • J'adore 20
  • J'aime 2
Link to comment
Share on other sites

  • 3 months later...

bonjour

quelqu'un peut me aider?

Je ai ce problème lorsque l'on veut utiliser le binaire compilé.

 

Client Syserr

1213 16:47:02018 :: CANNOT_FIND_PACK_FILE [sound/effect/etc/dropitem/dropitem.mss]
1213 16:48:12635 :: ui:2806: RuntimeWarning: tp_compare didn't return -1 or -2 for exception

1213 16:48:12643 :: 
introLogin.py(line:499) __LoadScript
ui.py(line:2799) LoadScriptFile
ui.py(line:2989) LoadChildren
ui.py(line:2989) LoadChildren
ui.py(line:2806) LoadChildren

LoginWindow.__LoadScript.LoadObject - :Python int too large to convert to C long

1213 16:48:12645 :: ============================================================================================================
1213 16:48:12645 :: Abort!!!!



Link to comment
Share on other sites

  • 6 months later...
  • Retraité

Pour l'erreur C long

 

LoginWindow.__LoadScript.LoadObject - :Python int too large to convert to C long

 

A l'entête du fichier: PythonUtils.cpp, ajoutez:

 

 

#define PyLong_AsLong PyLong_AsLongLong

#define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong

 

 

 

Link to comment
Share on other sites

  • 2 months later...
  • Funkiest

Where is the python27.lib? Put download whit all the files to implement please. Ty

 

Télécharger mon client: https://funky-emu.net/topic/15375-thread/

 

Il suffit de prendre le dossier lib ainsi que python27.dll

Dans ce cas, votre client sera complètement en Python 2.7 !!

 

 

Otherwise, take it from the official client

  • Funky Emulation 1
  • J'adore 5
Link to comment
Share on other sites

  • 7 months later...
  • 2 years later...
  • 3 weeks later...
  • 6 months later...
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.