Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

C++ - Upgrade Python de 2.2 en 2.7


Messages recommandés

  • 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

  • Metin2 Dev 6
  • Good 2
  • Love 21
Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

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
Partager sur d’autres sites

  • 6 mois après...
  • 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

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • Funkiest

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

 

Télécharger mon client: https://fr.metin2.dev/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

  • Metin2 Dev 1
  • Love 5
Lien vers le commentaire
Partager sur d’autres sites

  • 7 mois après...
  • 2 ans après...
  • 3 semaines après...
  • 6 mois après...
  • Administrateur
il y a 2 minutes, Lunaa a dit :

Quel intérêt de séparer les tutoriels sachant qu'un découle de l'autre et ne peut être générer autrement ?

 

Si tu veux t'y mettre le temps que cela soit fusionné, j'en t'en pris.

 

https://fr.metin2.dev/forum/815-réécrire-un-partage-tutoriel/

Lien vers le commentaire
Partager sur d’autres sites



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

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.