-
Compteur de contenus
3211 -
Inscription
-
Dernière visite
jamais -
Jours gagnés
9
Type de contenu
Profils
Forums
Boutique
Calendrier
Tout ce qui a été posté par Metin2 Dev
-
Configuration des files (en Local)
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Ton serveur arrive pas à ce connecter à la base de données. Vérifies tes fichiers CONFIG (dans tous les cores) -
Heu... Pourquoi ça marcherait pas ?
-
SQL affichage guilde/joueur
Metin2 Dev a répondu à un(e) question de MacDonarty dans Questions & Réponses
e suis sur mon portable donc je vais pas taper les querys mais je t'explique.... Tu prends l'ID du joueur si t'as select toute la lignes, prends le nom de ta query et tu mets ['id'] Ensuite, dans la table guild_member tu sélectionnes la 'guild_id' ou 'pid' = 'id du membre que ta récupe avant" Et tu finis par prendre dans la table guild le name ou 'id' est le 'guild_id' que t'as enregistré avant Je fais ça de tête, donc me juge pas si j'ai fais des erreurs, sachant que je suis une bille en SQL (Toute est une question de SELECT * FROM .... WHERE....) INNER JOIN comme te montre ant0k | | | \/ -
Python - 2: Développons un anti-cheat en Python
Metin2 Dev a répondu à un(e) sujet de Metin2 Dev dans Programmation & Développement / Codes
Je compte faire du cs plus tard je publierais des launchers. Enfin si le forum est toujours debout.... -
Python - 2: Développons un anti-cheat en Python
Metin2 Dev a répondu à un(e) sujet de Metin2 Dev dans Programmation & Développement / Codes
Tu as raison, mais bon... Le risque de collision avec un cheat en plus est quasi nul.... sha512 on n'a pour l'instant pas trouvé de collision, rien ne prouve qu'il n'est n'existe pas non plus :3 -
Python - 2: Développons un anti-cheat en Python
Metin2 Dev a répondu à un(e) sujet de Metin2 Dev dans Programmation & Développement / Codes
Ouais mais des fois ça craque.... -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Tu télécharges, t'installes, tu joues. Pas besoin de compiler pour pouvoir faire fonctionner les files, la compilation te sers juste à modifier ton serveur, (ajouter des systèmes ou modifier un déjà installé et autres.) -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Visual Studio = source client Freebsd comme tu dis = Source serveur -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Si tu utilises la branche mainline tu trouveras tout de dans mainline/Srcs/Server/game mainline/Srcs/Server/db mainline/Srcs/client/.... -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Source serveur --> game Source client --> metin2client.exe Source db ---> base de données DumpProto --> Transformer l'item_names.txt et l'item_proto.txt (qui sont placés dans tes files) en item_proto (sans extension) à mettre dans le client. item_names ---> vnum + nom de l'item item_pro --> Tous les caractéristiques de l'item ! Et les libs sont nécessaire pour faire tourner Metin2, elles ne lui sont pas propre -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Alors alors alors -->Créer sa propre VM peut être mieux car ça t'habitue pour un futur serveur dédiée ui -->L'archives des sources est aussi grosses car tu as plusieurs branches qui contiennent toute sources server/client/game/dumpProto etc... -->Les files contiennent déjà un game, mais fais dans l'ordre que tu veux, et tu dois déjà installer les libs car sinon tu ne pourras pas démarrer le serveur -->Une fois le serveur ouvert tu n'auras plus qu'à configurer on serverinfo.py se trouvant dans le pack root de ton client ui Si t'as d'autres questions -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Ce qui distingue la branche mainline et la novaline je te dirais bien le code de dans mais bon... Elles sont sensées donner la même chose. La mainline est la plus utilisées. Le game, bah c'est tout le jeu en fait Et non la compilation des sources, ça donne que le game (Après tu as les sources client, qui elles vont te donner le metin2client.exe et les sources db) -
Quelles files choisir en 2017 ?
Metin2 Dev a répondu à un(e) question de Sufhal dans Questions & Réponses
Salut ! Bon déjà, les plus propres c'est les 2014. Ensuite : Les sources une fois compilées sous FeeBSD (avec g++... Tu trouveras plus d'infos sur certains poste du forum) vont te donner une "game". Celui-ci est propre à ses files. Kraizy sont les sources je pense les plus propres partagées à ce jour. Avec un peu d'aide, tu pourras facilement les compiler. Je reprends le point 'Que faut-il pour compiler'... Sinon solution assez simple, tu peux télécharger viens Mega Synch (car le fichier fait plus de 5GB) la VM avec les files 2014 FE déjà prêtes. La VM étant aussi prêtes à compiler. Il te restera à mettre tes propres sources (kraizy donc) dans le dossier usr/src/ et faire (si tu veux par exemple compiler la branche mainline) : # cd /usr/src/mainline/Srcs/Server/game/src/ # gmake clean ------> (permet de nettoyer la précédente compilation) # gmake dep -------> (Permet de créer les dépendances) # gamek -j20 --------> (lance la compilation de ton game) Je sais pas si j'ai fais le tour... Si t'as d'autres questions Cordialement. -
Erreur compilation game files 2016
Metin2 Dev a répondu à un(e) question de Daymortel dans Questions & Réponses
Tu pourrais juste copier tous les messages de la compilation, car y'a encore des erreurs en haut qu'on voit pas^^' PS : Change la fin de ton char_item.cpp comme ça déjà (rajoute l'accolade) : Cordialement. -
Erreur compilation game files 2016
Metin2 Dev a répondu à un(e) question de Daymortel dans Questions & Réponses
Envoie nous ton cmd general et ton chat item déjà... -
Python - 2: Développons un anti-cheat en Python
Metin2 Dev a posté un sujet dans Programmation & Développement / Codes
Bonjour. Ce tutoriel est la suite de celui-ci : Vous pouvez bien sûr prendre la série à n'importe quel tutoriel, mais, je vous conseille de tout lire, ça ne peut que vous aider à mieux comprendre le code et la syntaxe. Bon développement ! Aujourd'hui, je voudrais que l'on voit ensemble les hash en Python. D'abord, je voudrais vous expliquer ce qu'est un hash. Un hash cryptographique, en gros c'est une série de chiffres et de lettres générée par une fonction faite pour ça. Ce n'est rien d'autre q'un algorithme ou une série d'opérations mathématiques. On distingue plusieurs langue de cryptographie. Dans ce tutoriel, nous allons utiliser celle nommée "md5". Bien, commençons ! Ouvrons toujours notre fichier (takuma.py pour moi). Je vous propose d'ajouter sur les imports ce bout de code : __doc__ = """Module criptyage ci-dessous :""" __always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') algorithms_guaranteed = set(__always_supported) algorithms_available = set(__always_supported) algorithms = __always_supported __all__ = __always_supported + ('new', 'algorithms_guaranteed', 'algorithms_available', 'algorithms', 'pbkdf2_hmac') def __get_builtin_constructor(name): try: if name in ('SHA1', 'sha1'): import _sha return _sha.new elif name in ('MD5', 'md5'): import _md5 return _md5.new elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'): import _sha256 bs = name[3:] if bs == '256': return _sha256.sha256 elif bs == '224': return _sha256.sha224 elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'): import _sha512 bs = name[3:] if bs == '512': return _sha512.sha512 elif bs == '384': return _sha512.sha384 except ImportError: pass raise ValueError('unsupported hash type ' + name) def __get_openssl_constructor(name): try: f = getattr(_hashlib, 'openssl_' + name) f() return f except (AttributeError, ValueError): return __get_builtin_constructor(name) def __py_new(name, string=''): return __get_builtin_constructor(name)(string) def __hash_new(name, string=''): try: return _hashlib.new(name, string) except ValueError: return __get_builtin_constructor(name)(string) try: import _hashlib new = __hash_new __get_hash = __get_openssl_constructor algorithms_available = algorithms_available.union( _hashlib.openssl_md_meth_names) except ImportError: new = __py_new __get_hash = __get_builtin_constructor for __func_name in __always_supported: try: globals()[__func_name] = __get_hash(__func_name) except ValueError: import logging logging.exception('code for hash %s was not found.', __func_name) try: from _hashlib import pbkdf2_hmac except ImportError: import binascii import struct _trans_5C = b"".join(chr(x ^ 0x5C) for x in range(256)) _trans_36 = b"".join(chr(x ^ 0x36) for x in range(256)) def pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None): if not isinstance(hash_name, str): raise TypeError(hash_name) if not isinstance(password, (bytes, bytearray)): password = bytes(buffer(password)) if not isinstance(salt, (bytes, bytearray)): salt = bytes(buffer(salt)) inner = new(hash_name) outer = new(hash_name) blocksize = getattr(inner, 'block_size', 64) if len(password) > blocksize: password = new(hash_name, password).digest() password = password + b'\x00' * (blocksize - len(password)) inner.update(password.translate(_trans_36)) outer.update(password.translate(_trans_5C)) def prf(msg, inner=inner, outer=outer): icpy = inner.copy() ocpy = outer.copy() icpy.update(msg) ocpy.update(icpy.digest()) return ocpy.digest() if iterations < 1: raise ValueError(iterations) if dklen is None: dklen = outer.digest_size if dklen < 1: raise ValueError(dklen) hex_format_string = "%%0%ix" % (new(hash_name).digest_size * 2) dkey = b'' loop = 1 while len(dkey) < dklen: prev = prf(salt + struct.pack(b'>I', loop)) rkey = int(binascii.hexlify(prev), 16) for i in xrange(iterations - 1): prev = prf(prev) rkey ^= int(binascii.hexlify(prev), 16) loop += 1 dkey += binascii.unhexlify(hex_format_string % rkey) return dkey[:dklen] del __always_supported, __func_name, __get_hash del __py_new, __hash_new, __get_openssl_constructor new = md5 blocksize = 1 digest_size = 16 def sumFileMD5(filePath): fichier = open(filePath, 'r') c = md5() while 1: try: d = fichier.next() c.update(d) except: break fichier.close() return c.hexdigest() Avec les tabulations : [Hidden Content] Bien, je ne vais pas tout vous expliquer en gros vous venez d'ajouter le code d'une libs légèrement modifiée, je pouvais pas faire plus simple que tout vous servir comme ça ! Bien, maintenant notre but va être de "scanner" les fichiers ce trouvant dans le dossier "miles". On va donc récupérer le hash md5 de chaque fichier. Pour cela, créons une variable, par exemple VerifA qui va contenir le hash. Pour hash, nous utilisons ici la fonction "sumFileMD5" avec le contenue à hash, ici nous allons mettre la destination de nos fichier par rapport aux client, cela donne : VerifA = sumFileMD5('miles/mssa3d.m3d') On fait de même pour tous ce qui donne au final : VerifA = sumFileMD5('miles/mssa3d.m3d') VerifB = sumFileMD5('miles/mssds3d.m3d') VerifC = sumFileMD5('miles/mssdsp.flt') VerifD = sumFileMD5('miles/mssdx7.m3d') VerifE = sumFileMD5('miles/msseax.m3d') VerifF = sumFileMD5('miles/mssmp3.asi') VerifG = sumFileMD5('miles/mssrsx.m3d') VerifH = sumFileMD5('miles/msssoft.m3d') VerifI = sumFileMD5('miles/mssvoice.asi') Bien, maintenant on va devoir vérifier que nos fichiers sont intacte, soit qu'ils ont le bon hash. Pas besoin de launcher, de toute façon, ces fichiers n'ont jamais changé. Nous créons donc une condition : Si VerifA est différent de "HashOriginal": -Message d'erreur -On coupe le client. Et on va faire ça pour tous, je vous montre pour un, et je vous donne après le code pour tous. Si vous ne savez pas faire une condition, vous trouverez des tutoriels partout même ici. il vous manque peut être : -"différent de" = "!=" -Afficher une erreur "dbg.LogBox(message)" -Fermer le client : "app.Abort()" Cela donne pour VerifA : if VerifA != '7fa65499747607679068ce32e57735c4': dbg.LogBox("Une erreur est survenue le fichier : mssa3d.m3d est corrompu !") app.Abort() Je vous donne donc pour tous, pour pas que vous n'ayez à faire les hash vous même : if VerifA != '7fa65499747607679068ce32e57735c4': dbg.LogBox("Une erreur est survenue le fichier : mssa3d.m3d est corrompu !") app.Abort() if VerifB != 'c57b37054d90043f160e6c2fdc3a7dd7': dbg.LogBox("Une erreur est survenue le fichier : mssds3d.m3d est corrompu !") app.Abort() if VerifC != 'c11063f4ab4dda5be827af3be724eaf0': dbg.LogBox("Une erreur est survenue le fichier : mssdsp.flt est corrompu !") app.Abort() if VerifD != '7a76fb64014e9451b94efb1a70b40504': dbg.LogBox("Une erreur est survenue le fichier : mssdx7.m3d est corrompu !") app.Abort() if VerifE != '09e7dd8b2a2059877dceae4bfcb7a4df': dbg.LogBox("Une erreur est survenue le fichier : msseax.m3d est corrompu !") app.Abort() if VerifF != 'cdc0107209b266753a296046c7405c0b': dbg.LogBox("Une erreur est survenue le fichier : mssmp3.asi est corrompu !") app.Abort() if VerifG != '15451f0091181dfd3eb3cb381fc37e0f': dbg.LogBox("Une erreur est survenue le fichier : mssrsx.m3d est corrompu !") app.Abort() if VerifH != '605acc1aa4b0c0e731cfd764e0030d97': dbg.LogBox("Une erreur est survenue le fichier : msssoft.m3d est corrompu !") app.Abort() if VerifI != '2c5656eebd71f8ededbda199921a918a': dbg.LogBox("Une erreur est survenue le fichier : mssvoice.asi est corrompu !") app.Abort() Avec les tabulations : [Hidden Content] Voilà, c'était court, mais efficace. Votre dossier miles est maintenant entièrement protégé. Vous n'avez changer n'importe quoi avec un éditeur hexadécimal sur vos fichiers pour voir que votre client ne démarrera pas ! Cordialement, Takuma. -
Change la balise.
-
Toujours les faire un par un. Retourne sur une ancienne sauvegarder. (Commence par l'interface module je pense )
-
Bref, c'est après avoir changé quel(s) fichier(s) ? Game ? Interfacemodule ? etc... ? Cordialement.
-
C'est bien je kiff ton onglet de gauche.
-
Tu fais une quete : Quand un joueur ce co Si il est GM : notice : ..name.. vient de se connecter, Cherche dans les quêtes sur le fofo t'as de quoi le faire facilement toi même.
-
[Résolu] Files 2014, erreur au lancement.
Metin2 Dev a répondu à un(e) question de Serial dans Questions & Réponses
Ta version freebsd est trop basse, passes en 9.2 ou utilises un autre vdi du forum -
Problème source client et server
Metin2 Dev a répondu à un(e) question de Infinity dans Questions & Réponses
L'archives des srcs -
Problème source client et server
Metin2 Dev a répondu à un(e) question de Infinity dans Questions & Réponses
Ouvre l'archive et dis moi le premier fichier que tu vois stp (Si c'est src upload le dans /usr/ Si c'est autre chose upload le dans le dossier que tu veux dans src) -
Comme tu m'as dis de pas le dire, je vais le dire. Bon boulot, dommage qu'il y ait des fautes :3
