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

Metin2 Dev

Robot
  • Compteur de contenus

    3211
  • Inscription

  • Dernière visite

    jamais
  • Jours gagnés

    9

Tout ce qui a été posté par Metin2 Dev

  1. Metin2 Dev

    Attrapez les bons !

    Bonjour, Voici un bon de réduction de 30% utilisable par 3 membres ! Enjoy !
  2. On verra ça plus tard, pour l'instant je n'ai pas le temps. Tu pourrais continuer non ? Je ne pense pas t'avoir perdu à ce niveau là
  3. Mise à jour : Les grades suivants peuvent désormais voir sans commenter le sujet : -Spécialiste en herbe -Acharné du clavier -Esprit omniscient -Premium -The Funkiest -Génie extralucide -Scientifique illuminé
  4. Bonjour à tous, Je viens vous faire un petit listing des changements du 08/04. Mise en place de l'application "Créations", les membres pourront désormais afficher leur création via un blog sans passer par les sections créations. Un règlement sera écrit dans la journée, merci de bien vouloir le lire avant de créer votre blog. Modification des droits de modération des groupes du Staff. Mise à jour du captcha d'inscription. Les inscriptions sont désormais opérationnelles. Création de deux sous-sections pour le sous-forum Funky-Emulation. L'équipe,
  5. L'heure est grave. Bonsoir. Après avoir réfléchie (comme quoi tout est possible) sur un moyen d'aider funky-emu, j'ai peut-être trouver une solution, mais qui nécessite l'action de plusieurs personne de part mon manque de connaissances. Après avoir vu cette phrase : Je me suis simplement la posé la question "Oui d'accord, mais une fois que le forum sera ouvert à tous, il va bien falloir faire venir des gens non ? Comment ?". Pour l'instant, si vous regardez bien, tout le contenu sur Funky-Emu est disponible sur d'autres forums, mêmes les Files FE, VM etc.. Il nous faut donc de la nouveauté. Je ne souhaite pas me focaliser spécialement sur la section Metin2. Le but est de développer de la nouveauté partout. Pour cela, il n'y a pas de secret, il faut travailler et apprendre. Après en avoir parler avec deux ou trois personnes voici les idées principales qui en sont sortit : Forum en général : Produire un système d'onglet permettant d'avoir deux versions pour chaque tutoriel, une version anglais et une version française. Traduire le maximum de chose en anglais si possible avec un système adapté. Côté Metin2 : Nouveaux systèmes. Produire de nouvelles files, peut être moins compètes que les autres, mais totalement stables. Éviter de faire des tutoriels ciblés et se focaliser sur l'apprentissage en général afin de permettre à tous de faire eux-même une production. Faire un site web et/ou adapté des anciens CMS afin d'avoir un design plus moderne. Du côté des autres émulations : J'attends vos idées. Il faudrait donc pour ça travailler en groupe. Je recherche donc des personnes de tous les domaines disponibles sur Funky-Émulation, prêtes à donner de leur temps, et à s'investir afin de relancer funky-Émulation et de lui offrir le succès qu'il mérite. Les principales personnes recherchées par ce poste ne sont pas forcément les codeurs confirmés, loin de là. Si certains naissent en codant comme ils le laissent entendre, croyez moi, ce n'est pas si facile que ça. L'apprentissage est la clé. Pour transmettre son savoir en tant que production, il faut déjà l'acquérir. Et je pense qu'apprendre en équipe est beaucoup plus facile que seul dans son coin. Je recherche donc des personnes confirmées ou intéressées par : Les différents langages WEB comme l'HTML, le CSS, le JavaScript et le PHP. L'administration de machine pouvant permettre une utilisation optimale de celles-ci. Différents langages comme : C++ : Si nous voulons relancer les émulations, il est strictement obligatoire. Python : Pas forcément orienté Metin2, python est avant tout un langage disponible sur tous les systèmes d'exploitation, c'est donc un énorme avantage. LUA : Que ce soit les quêtes Metin2, le client RaiderZ ou bien d'autre, il va nous en falloir ! JAVA : Minecraft n'est pas mort, loin de là ! Oui des gros forums ont pris énormément d'avance, mais n'oublions qu'ils ne sont pas intouchables. Les graphismes : Ils sont nécessaires partout, si ce n'est pour l’identité de l'équipe. Des modélisateurs : Les nouveaux modèles 3D font des fois énormément de bruits, c'est un domaine très compliqué, mais qui a le mérite d'être très populaire sur certaines émulations. Autre ? A vous de me dire ! Je me permet de déjà répondre à certaines questions que je vois venir : Et qui sera le leader de l'équipe ? Aucune idée. Je n'y ai même pas réfléchie, une fois une petite équipe fondée nous désignerons à la majorité je pense. Vous avez déjà essayé avec la Team-Emu et ça n'a rien donné : Pour en revenir sur ce qu'il s'est passé sur la Team-Emu car plusieurs bruits couraient, cela n'a rien à voir avec tout ça. Et de toutes manières, nous n'avons ici pas le même but. J'attends donc vos idées, vos critiques, tout. Si vous voulez participer à ce projet qui ne peut être que bénéfique pour vous, dites le moi. "C'est des forces des convictions que dépend la réussite pas du nombre de partisan." Amicalement.
  6. Bonjour à tous ! Voici donc le bon de réduction de 50% ! Disponible uniquement pour un membre. L'équipe,
  7. Bonjour à tous ! Voici donc un récapitulatif de la dernière réunion qui a eu lieu jeudi 29 mars 2018. Tout d'abord nous avons parlé du forum d'une manière générale, de son fonctionnement et ensuite de certains systèmes à revoir. I°/Les réunions de Staff rendues publiques ? Comme vous avez pu le remarquer, avant les réunions de Staff n'étaient pas rendues publiques (sauf celle publiée sur Youtube datant de Racto et Fatality.) Désormais le Staff a pris la décision de faire une réunion mensuelle afin de voir le fonctionnement de Funky sur les derniers changements, les problèmes ou les évolutions. Suite à cela un récapitulatif détaillé vous sera proposé d'ici les 3 jours suivants cette réunion. Il en va de soi que les membres peuvent discuter avec nous sur certains points, nous faire parvenir des idées voir même de poser des questions afin qu'on en discute lors de la prochaine réunion ! II°/Qui dit le printemps, dit nettoyage ? Et pas que de la chambre ! Et oui, le nettoyage de Funky doit être envisagé ! Les diverses sections doivent être nettoyées en profondeur ! Ce qui veut dire que les sujets anciens seront archivés, certains tutoriels réécris ou les sujets possédant des liens morts seront signalés. Cela ne sera pas fait en une semaine. Le peu d'effectifs dans le Staff en est la cause de cette longue attente ! III°/L'activité, un gros soucis de nos jours. C'est LA question de la réunion, l'activité du forum est en baisse et d'après les statistiques le mois de Mars 2018 est le mois le plus bas que Funky est connu depuis Décembre 2014. Quelles sont les causes ? En premier temps le départ de nos nombreux anciens membres, qui étaient actifs à l'époque. La démotivation de certains (que ce soit à apprendre correctement ou partager). Il y a aussi un groupe de personne étant visée, ce sont les leechers, dont nous avons beaucoup discuter et chercher une solution pour y remédier. (Pour vous donner des chiffres, 8250 comptes sur 13616 possèdent moins de 1 message) Qu'allons nous faire ? Qu'est ce que l'on propose ? Tout d'abord, nous allons passer à une méchanceté un peu plus exagérée concernant les liens disponibles sur FE. En effet nous pensons les cacher avec un système de Likes ou de Réponses (Entre autre si vous voudriez voir un lien, vous devrez donner un point de réputation à l'auteur ou répondre au sujet). Alors, oui ça ne supprimera pas les leechers, mais nous allons profiter de leur situation pour notre propre intérêt. A quoi cela servirait ? Tout simplement le fait que les leechers devront liker ou répondre, cela augmentera l'activité du forum, ainsi cela aura un effet bénéfique sur le référencement de notre forum. Ensuite nous allons revaloriser certains systèmes notamment celui des Team, celui-ci à fait un gros flop, nous nous attendions à plus de choses venant de lui. Dans ce cas chaque Team (composée au minimum de 3 membres) qui proposera un contenu (qu'il soit inédit ou non) se verra récompensée. La récompense reste encore à discuter mais soit nous proposerons un article de la boutique, un bon de réduction ou encore des points de grade (à voir aussi si selon les revenus du forum nous pourrions pas vous proposer un cadeau réel tel qu'un t-shirt, un mug ou autre). Augmenter les événements au sein de notre forum ! Alors comment et avec quels événements ? Des énigmes, si notre cerveau nous le permet. Chaque semaine sera donné un code de réduction sur la boutique (le code sera donné à n'importe quel jour de la semaine, à n'importe quelle heure !) Allant de 25% à 50% de réduction. A savoir que les codes allant de 25 à 35% seront utilisables par 3 membres différents et ceux de 40 à 50% par un seul et unique membre ! Soyez à l’affût ! Proposer des événements propres à des sections, il est vrai que nous avons un réel soucis d'imagination concernant les sections d'émulations. Ouvrir le forum à l'international. Le forum restera en Français (la seule chose à traduire sera le règlement) mais par le biais d'un système d'étiquette vous pourrez voir si c'est un topic Français ou Anglais. (Même si le titre fait tout.) IV°/Diverses idées restantes. Revaloriser l'utilisation des réseaux sociaux. L'utilisation des réseaux sociaux est plutôt complexe pour un forum étant dans l'illégalité (du fait qu'il exploite l'émulation), mais la seule pub que nous pourrions faire c'est à travers eux ou à travers des partenariats, qui semblent difficile à trouver. Revaloriser les recrutements au sein du Staff. Doit-on être aussi exigent que nous l'étions il y a quelques années ? Nous avons remarqué que plus personne ne s’intéresse aux recrutements, qu'est-ce qui bloque ? Comment sommes-nous arrivés là ? Il en va de soi que notre principale exigence est l'activité sur le forum et la maturité ! Doit-on nous même piocher dans la communauté des personnes susceptibles de rentrer dans le Staff et de leur proposer ? Revaloriser la chaîne Youtube. Gurgarath est le seul ayant proposé des tutoriels dernièrement pour cette chaîne, qu'est ce qui pourrait relancer cette chaîne ? Revaloriser certaines sections. Doit-on mettre certaines sections à l'oubliette ? Ou devrions-nous proposer des projets communautaires concernant les sections moins actives ? Voilà pour le récap' ! N'hésitez pas à nous faire part de votre avis, de vos suggestions ou tout simplement de vos questions. L'équipe de Funky-Emulation,
  8. Bonjour à tous ! Les cloches arrivent bientôt ! Le lapin de Pâques est venu plus tôt sur Funky ! Il nous a rapporté un bon de réduction de 30% sur votre prochain achat ! Notez bien ! PAQUES2018 ! Celui-ci est disponible jusqu'au 08/04. Lorsque vous arriverez à votre validation d'achat, n'oubliez pas d'inscrire le code dans la case code promo ! Profitez bien et ne mangez pas trop de chocolats !
  9. Essayes les mots de passes suivant : -test -funky-emu -funkyemu Sinon prends le VDI de Saw, il est correct et tu n'auras pas à faire 36 commandes pour changer un mdp.
  10. Metin2 Dev

    VirtualBox

    Bonjour, Tu possèdes quelles files exactement ?
  11. 3 ans ? Ah. Je suis à la bourre on dirait !
  12. Je n'utilise plus là LZO, c'est trop obsolète, je te laisse le constater ici d'ailleurs : [Hidden Content] Tu as du choix, LZ4, etc... De plus j'ai réuni mes eix et epk dans un même fichier. J'ai également changé tout le système de cryptage, voilà pourquoi je n'ai plus ses parties de client, j'ai c/c d'un autre forum le code je ne sais plus le quel. Oupss j'ai du passé à côté alors ?! Sans problème !
  13. C'est justement car il est partagé que j'ai pas tout traduit, et que j'ai laissé "lista" etc... @Takuma C'est assez compliqué pour moi de ce côté, je suis plus en LZO comme la plus part du temps, et clairement j'ai pas le courage de retourner sous LZO juste pour ça. J'étais entrain d'y penser, je pourrais limite faire un tuto pour forcer le démarrage du client par le launcher, grâce à des arguments et le lanceur en ressources du launcher. Je me vois pas de recoder un launcher entier et recoder l'UserInterface pour qu'il ne se lance qu'à ce moment, etc... J'ai carrément la flemme ! Merci
  14. Bonjour. On dit toujours que la protection ne doit pas être exclusive... Elle l'est souvent. Je n'ai pas des grosses connaissances en ce sujet, je ne joue pas souvent à Metin2, j'ai juste regardé une après midi les sources et comment est fait le client, pour essayer de faire une protection basique, dont le contenu est compréhensible par tout le monde afin de faire progresser les personnes avec des connaissances assez modestes comme les miennes. Je suis pas codeuse, je ne travaille pas là de dans, mon code n'est peut-être pas très optimisé, si vous faites mieux allez-y, ça me fera plaisir de voir comment j'aurai pu faire autrement Avant n'importe quelle manipulation se trouvant dans ce tutoriel, vous devez faire une sauvegarde. Ne vous dites pas "je vais suivre à la lettre c'est bon". Je n'ai pas du tout envie que vous soyez obligé de recommencer quelques choses car je me suis mal exprimée. L'avertissement étant donné, nous pouvons commencer. Vérification de certains fichiers par les sources client : Nous allons ici utiliser l'encodage MD5. Je sais que des collisions sont possibles, et que je devrais utiliser le sha-256. Mais je considère que le risque de collision entre deux fichiers sachant qu'un doit avoir plus de contenu tout en restant fonctionnel... Je considère que la probabilité est nulle. Bien, commencer, vous allez devoir ajouter un fichier dans votre UserInterface, pour cela vous avez plusieurs méthodes, la plus simple reste encore (à mon goût) celle-ci : Vous allez ensuite nommé ce fichier comme bon vous semble, mais je vous conseil de l'appelé mh5.h comme ça, pas de confusion possible. Vous allez ensuite copier l'intégralité de ceci dans le fichier : [Hidden Content] Vous pouvez ensuite sauvegarder votre fichier. Ouvrez ensuite votre Locale_inc.h : Ajoutez en dehors de toute boucle : #define ENABLE_CHECK_FILES_MD5 Je vous explique ceci à la fin, c'est très simple à comprendre vous allez voir, je vous mettrai une petite note explicative. Ensuite, rendez-vous dans votre UserInterface.cpp : Ajoutez avec les autres includes : #ifdef ENABLE_CHECK_FILES_MD5 #include md5.h #include windows.h #endif Ici, nous ajoutons des fichiers nécessaire au script. On inclue les données de ce fichier dans UserInterface.cpp. Cherchez ensuite : static const char * sc_apszPythonLibraryFilenames[] = Vous trouverez normalement une liste qui ressemble à celle-ci : static const char * sc_apszPythonLibraryFilenames[] = { "UserDict.pyc", "__future__.pyc", "copy_reg.pyc", "linecache.pyc", "ntpath.pyc", "os.pyc", "site.pyc", "stat.pyc", "string.pyc", "traceback.pyc", "types.pyc", "\n", }; Vous allez ajouter en bas : #ifdef ENABLE_CHECK_FILES_MD5 #define MAX_ROWS_MD5 21 static char * ar_szMD5FileNames[MAX_ROWS_MD5][2] = { { "lib/__future__.pyc", "d2505c6e64dc44a1745dda0905f4e787" }, { "lib/copy_reg.pyc", "5e996d35b598676b253dd25fa3809ef2" }, { "miles/mssdsp.flt", "cb71b1791009eca618e9b1ad4baa4fa9" }, { "miles/msssoft.m3d", "bdc9ad58ade17dbd939522eee447416f" }, { "miles/mssa3d.m3d", "e089ce52b0617a6530069f22e0bdba2a" }, { "miles/mss32.dll", "6400e224b8b44ece59a992e6d8233719" }, { "pack/uiscript.eix", "d211c0a83ff2c771946d73554916bd9a" }, { "python27.dll", "d219c0a8aff2c771946d73554916bd9a" } }; #endif Vous allez ici devoir ici déjà : Mettre les fichiers que vous désirez, Ajouter une virgule à toutes les lignes sauf à la dernière Changer les hash md5 "d2505c6e64dc44a1745dda0905f4e787" selon vos fichiers. Faites bien attention à ajouter la destination dans le nom de fichier, par exemple pour les packs vous voyez bien que j'ai ajouté pack/uiscript.eix car mes packs se trouvent dans le dossier packs. Pour hash vos fichiers, je ne vous laisse pas dans la nature, voici un petit programme que j'ai recodé de façon à pouvoir vos permettre de : Voir le MD5 de vos fichiers Changer le hash md5. Vous allez ensuite chercher : bool __IsLocaleVersion(LPSTR lpCmdLine) { return (strcmp(lpCmdLine, "--perforce-revision") == 0); } Puis ajouter en dessous : #ifdef ENABLE_CHECK_FILES_MD5 void CheckMD5Filenames() { MD5 md5; for (int it = 0; it < _countof(ar_szMD5FileNames); it++) { if (strcmp(md5.digestFile(ar_szMD5FileNames[it][0]), ar_szMD5FileNames[it][1])) { char szBuf[512 + 1]; snprintf(szBuf, sizeof(szBuf), "Le fichier %s est corrumpu.", ar_szMD5FileNames[it][0]); MessageBoxA(NULL, szBuf, "#Metin2", NULL); exit(0); } } } #endif Enfin, cherchez : if (strstr(lpCmdLine, "--hackshield") != 0) return 0; Ajoutez après : #ifdef ENABLE_CHECK_FILES_MD5 CheckMD5Filenames(); #endif Félicitations ! Vous n'avez plus qu'à compiler vos sources à nouveau. Petite explication sur le code : Nous allons maintenant voir comment exécuter un scripte de sécurité en Python. Trois problèmes se posent à nous : Que faire ? Comment le faire ? Où le faire ? Nous allons commençons par le plus simple "Où ?" : Et bien, sachant qu'en Python, le premier fichier chargé est le system.py cependant... Il ne dispose pas encore à ce stade de toutes les fonctions dont nous allons avoir besoin, nous allons par conséquence prendre le deuxième fichier : prototype.py Vous allez donc mettre en toute première ligne de ce fichier : import akihira Note : Remplacez akihira par ce que vous voulez. Vous allez ensuite créer un fichier du même nom que celui que vous avez importer dans notre root, par exemple ici, akihira.py. Bien, commençons à éditer notre fichier. Vous allez commençons par ajouter ces imports : import os import thread import time import app import dbg os : Il va nous permettre de nous balader dans les destinations et d'utiliser les fichiers. thread : Il va nous permettre quant à lui de créer des instances, et donc de faire plusieurs choses en même temps. time : Il va bien falloir donner une fréquence à la répétition de la vérification, la voici. app : C'est un module généré par C++ dans les sources client. Nous allons ici nous en servir pour "faire planter" le client. dbg : DialogBoxGenerator, il me semble... Il permet de créer des boites de dialogue, ici il nous servira pour des fenêtres d'erreur. Bien, nous allons d'abord créer une liste, dans celle-ci, nous allons écrire la liste des programmes "parasites". C'est à dire ceux que nous ne voulons pas. Pour créer une liste en python, rien de plus simple ! Nous allons aimer ça syntaxe simple : black_list = [] Votre liste est crée... Je vous l'accorde, il faut la remplir ! Pour cela nous allons ajouter le nom des programmes en tant que chaine de caractère, donc entre guillemet(/apostrophe) et les séparer entre eux par une virgule. Voici un exemple : black_List = ["injector.exe","cheatengine-x86_64.exe"] Bien, je vous laisserai remplir la liste comme vous le souhaitez, de toute façon, nous allons adapter notre code pour qu'il s'adapte à n'importe quelle liste. Nous allons ensuite devoir dire à notre programme : Pour chaque membre de la liste (que l'on va nommé "membre") : Récupère la liste des programmes. Si un deux est le même que 'membre' Tu fermes le client Sinon : Tu recommences Nous n'allons en fait pas exactement respecter cette architecture, nous allons mettre exactement : Répète à l'infini : Pour chaque processus 'p' du gestionnaire de tâche : Pour chaque membre de la liste Si dans le processus tu trouves "membre": On arrête le processus On attend 5 secondes Bon est bien... On a du pain sur la planche ! Pour répéter à l'infini, nous allons utiliser une évidence. Mais d'abord, nous allons contenir tout ça dans une fonction afin de pouvoir la démarrer en tant qu'instance (thread) : def __process(): pass Bien, je vous ai parlé d'une évidence, vous vous demandez peut être ce que c'est, et bien... si je vous dis que 1 est égale à 1, vous me dit quoi ? "Bah oui" Et bien voilà, on va dire à Python : "Le temps que 1 = 1 :" Nous utilisons pour ça la structure while. Cela donne : def __process(): while 1 ==1: pass Bien... Continuons ! '¨pour chaque processus... Vous ne pouvez pas deviner ceci si vous débutez, je vous le donne : def __process(): while 1 == 1: for p in os.popen("tasklist"): Bien, ensuite "Pour chaque membre de la liste : def __process(): while 1 == 1: for p in os.popen("tasklist"): for Member in black_List: "Si tu trouves de dans "Member" : def __process(): while 1 == 1: for p in os.popen("tasklist"): for Member in black_List: if process.find(Member) !=1: Nous allons ensuite écrire ceci, je vous explique après : def __process(): try: while 1 == 1: for p in os.popen("tasklist"): for Member in black_List: if process.find(Member) !=1: p = process.slip() os.popen("taskkill /im %s /f" %p[0]) time.sleep(5) except: time.sleep(5) "MAIS T'AS TOUT CHANGÉ ÇA VA PAS DANS TA TÊTE ?" Mais nous, résumons, qu'est-ce que j'ai fais ? j'ai entouré le code de : try: Traduction : Essaye de... except : Traduction : Si tu n'y arrives pas : S'il n'y arrive pas, je lui ai dis ici d'attendre 5 secondes. J'ai ensuite rajouté le fait de lancer une commande pour "tuer"/arrêter le processus, puis attendre 5 secondes. Bien, il ne nous reste plus qu'une chose à faire ! Lancer la fonction grâce à une instance(thread), pour cela je vous donne la façon de faire : thread.start_new_thread(__process, ()) Mettez ceci à la fin de votre fichier, sans aucune tabulation. Félicitations ! Vous avez maintenant une boucle qui scanne les processus en permanence ! Vous devenez un champion ! Bien, maintenant nous allons faire la même chose pour chaque fichier du client avec des extensions et une liste, vous avez compris le principe, je peux vous donner directement la boucle : BanExt = [".m3d", ".py", ".fld", ".mix", ".asi"] Dest = os.listdir('.') Dest.sort() for Member in BanExt: for File in Dest: if File.find(Member) != -1: dbg.LogBox("Une erreur est survenue: " + str(File) + "") try: os.remove(File) except: dbg.LogBox("Erreur !") dbg.LogBox("Fichier: " + str(File)) app.Abort() A vous de choisir, si vous voulez refaire une boucle avec une évidence et une instance, pour lancer ce scan en permanence. Nous repassons du côté de vos sources clients pour la suite, ne vous faites pas avoir ! Bien, nous allons maintenant ajouter une protection très simple, le principe est aussi très simple : Quand un joueur attaque : Si il n'attaque pas (c'est assez contradictoire je sais) On annule l'action. Pour cela, nous allons juste ajouter deux minables lignes dans le PythonNetworkStreamPhaseGame.cpp Cherchez : TPacketCGAttack kPacketAtk; Ajoutez juste en dessous : if (!__IsPlayerAttacking()) return true; Nous vérifions ici que le joueur est bien entrain d'attaquer. Cette modification est réservée aux personnes ayant un minimum de connaissance en Python. Nous allons maintenant changer le premier fichier Python chargé afin de pouvoir gérer au maximum les erreurs en cas de besoin : Rendez-vous dans UserInterface.cpp : if (!pyLauncher.RunFile("system.py")) Changez comme vous le souhaitez le nom, et vous pouvez commencer à taper des scripts avant de lancer véritablement le client. Vous pouvez dans le même fichier changer le premier pack chargé afin de perturber les nouveaux apprentis pirates : Toujours dans UserInterface.cpp : CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); Modifier vos clés de compressions : Cette manipulation s'adresse aux personnes n'ayant pas changer leur compression et fonctionnant toujours sous LZO. Dans vos sources clients, rendez-vous dans Eterpack.cpp : Vous trouverez : static DWORD s_adwEterPackKey[] = { 45129401, 92367215, 681285731, 1710201, }; static DWORD s_adwEterPackSecurityKey[] = { 78952482, 527348324, 1632942, 486274726, }; Vous pourrez ensuite les modifications comme bon vous sembles le temps que vous pouvez les convertir en hexadécimal grâce à un petit script python disponible ici : import struct print "Exemple de clé: b99eb0026f69810563989b2879181a00\n" string=raw_input("Clé héxadécimal: ") lista=struct.unpack("LLLL", string.decode('hex')) n=0 print "\nGenerateur: \n" for i in lista: n+=1 i=str(i) i=i.replace("L", "") print "A" + str(n) + " = " + i Vous devrez ensuite entrées ces valeurs dans votre packer afin de l'adapté. Vous devrez ensuite repacker tout vos packs avec la nouvelle compression ! Changer les extensions de vos packs : Vous pouvez effectivement changer les extensions de vos packs grâce à une méthode très simple. Rendez vous dans Eterpack.cpp : strncpy(m_indexFileName, dbname, MAX_PATH); strcat(m_indexFileName, ".eix"); m_stDataFileName = dbname; m_stDataFileName += ".epk"; Changez comme bon vous semble en conservant 3 caractères après le point. Vous devrez ensuite changer l'option sur votre packer, puis utiliser ceci (IF) pour changer les extensions de vos packs : main @echo OFF @echo Modifiez l'extension @echo de vos fichiers :rename set EIX= set /P EIX=Choisissez l'extension de vos futurs fichiers EIX: %=% @ren *.eix *.%EIX% @echo Succès .%EIX% if "%EIX%" == "" GOTO errore set EPK= set /P EPK=Choisissez l'extension de vos futurs fichiers EPK: : %=% if "%EPK%" == "" GOTO errore @ren *.epk *.%EPK% @echo Succès .%EPK% @echo --- GOTO fine :errore @echo Erreur ! @echo L'extension n'est pas valide ! @echo --- GOTO esciprogramma :fine @echo Le changement est terminé ! Quittez le programme. :esciprogramma @pause :rename set EIX= set /P EIX=Choisissez l'extension de vos futurs fichiers EIX: %=% @ren *.eix *.%EIX% @echo Succès .%EIX% if "%EIX%" == "" GOTO errore set EPK= set /P EPK=Choisissez l'extension de vos futurs fichiers EPK: : %=% if "%EPK%" == "" GOTO errore @ren *.epk *.%EPK% @echo Succès .%EPK% @echo --- GOTO fine :errore @echo Erreur ! @echo L'extension n'est pas valide ! @echo --- GOTO esciprogramma :fine @echo Le changement est terminé ! Quittez le programme. :esciprogramma @pause Bien, je pense qu'on peut s'arrêter là, j'ai plus de temps... Et je n'ai plus vraiment d'idée je vais compléter plus tard si nécessaire. je suis consciente que des tutoriels ont déjà été publiés sur ce sujet, mais il fallait bien les regrouper au lieu d'en faire 9000 partout, si quelqu'un à donc d'autre proposition je suis preneuse. Je suis pas forcément limitée au niveau de la programmation surtout au niveau C++, donc n'hésitez pas si vous avez besoin, je connais mal le jeu, je ne sais pas quels sont les plus gros cheats, comment ils fonctionnent etc... Bonne soirée ! On ne doit pas avoir accès aux box d'alertes, c'est dommage, ça m'a cassé toute ma mise en page...
  15. Le titre est assez imprécis, j'ai regardé très brièvement le code, et je ne suis pas familiarisée avec le Python, mais cela sert à savoir si Oui, ou non l'entrepôt est ouvert non ? Il ne crée pas un événement quand celui-ci se ferme si ? Merci de ton partage.
  16. Pour le mot de passe navicat essayez : 16427crl OU teamfe OU 1
  17. Je suis désoler Link. mais le système fonctionne pour les armures et costumes, il suffit que d'ajouter ton vnum dans le effecttable.py de ton armures ou costumes..
  18. F Download Center Télécharger ( Interne ) Bonjour, Je me permet de partager le nouveau Set Zodiac de GameForge... Bonne journée ! Cordialement,
  19. Je vien de télécharger mon archive, et il à bien tout les fichiers à l'intérieur..
  20. Centre de Téléchargement Télécharger ( Interne ) Bonjour ! Je vien aujourd'hui vous partager un système d'effet qui vous permettra d'ajouter des effets à n'importe quel armures ou costumes par un fichier .py Téléchargement : ICIV2 Source : Freakgamer Edit : Ajout du code pour les effets sur les costumes dans le fichier InstanceBase.cpp Si vous avez des soucis avec ce système, je vous demande de poster votre problèmes dans la section Aide / Questions / Support.
  21. Il y a surtout une pub dans la citation qu'il a pris, c'est entre autre un spam Kija
  22. Centre de Téléchargement Télécharger ( Interne ) Bonjour Je vous partage un système qui vous permettra de voir une barre de vie sur les joueurs. Efficace pour les duel pour voir la vie en temps réel des joueurs ainsi de voir la vie des mobs,metin,boss. Téléchargement : ICI Source : Freakgamer Traduction : Rhynøs Si vous avez des soucis avec ce système, je vous demande de poster votre problèmes dans la section Aide / Questions / Support.

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.