Aller au contenu

C++ - Upgrade Python de 2.2 en 2.7


Messages recommandés

  • Administrateur

Centre de Téléchargement

Télécharger ( 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 3
  • J'adore 17
  • J'aime 1
Lien vers le commentaire
  • 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!!!!



Lien vers le commentaire
  • 6 months later...
  • Administrateur

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

 

 

 

Lien vers le commentaire
  • 2 months later...
  • 2 years later...
  • 3 weeks later...
  • 6 months later...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.