Metin2 Land
Découvrez le MMORPG RaiderZ

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation depuis le 12/16/17 dans toutes les zones

  1. 10 points
    Bonjour à tous, Ayant reçu et vu plusieurs demandes d'aide sur l'installation d'une machine virtuelle permettant de compiler tout en lançant les files ainsi que des personnes qui souhaitaient des liens autres que MEGA pour le VDI actuelle. J'ai décidé de me lancer dans la création d'une nouvelle machine virtuelle sous la version 9.2 32bit de FreeBSD, je vais vous expliquer ci-dessous les raisons pour lesquelles j'ai choisi cette version ainsi que les fonctionnalités de la VM. Sommaire : Pourquoi avoir choisi cette version de FreeBSD? Quelles sont les fonctionnalités de cette VM? Listing des packages installées sur la VM. Choses à savoir Donc commençons Pourquoi avoir choisi cette version de FreeBSD? Ça va être assez simple, la version 9.2 de FreeBSD reste la plus compatible avec les files Metin2, la version 9.3 fait aussi l'affaire mais il s'avère qu'elle pose quelques problèmes au niveau des fetch (permettant de télécharger via un lien), donc j'ai préféré ne pas la choisir. Ensuite, les versions beaucoup plus supérieures, à la 10 et au-dessus, la version de gcc (compilateur du game/db) n'est plus installée par défaut, ce qui veut dire que la version 4.2 n'est plus accessible d'installation via les ports/pkg (à ma connaissance). De ce fait vous ne pourrez donc pas compiler avec une version supérieure de gcc au dessus de la "4.2". Autrement, vous ne pourrez pas compiler les sources sans faire des modifications au niveau des libs/makefile et une dizaine de fichier serveur. Vous pouvez toujours installer une version supérieure de gcc et supprimer celle installer par défaut, vous êtes libre de faire ce que vous voulez. Quelles sont les fonctionnalités de cette VM? Alors, cette machine virtuelle a été créer dans le but d'être la plus compréhensible possible afin de pouvoir être utilisée par tout type de personne, quel que soit leur niveau dans ce domaine. Tout d'abord, l'heure sera mis à jour automatiquement par le réseau informatique FreeBSD, le protocole utilisé pour permettre ceci est "ntpd", il peut être désactivé par le biais du ficher rc.conf du répertoire etc. Par la suite, MySQL a été optimisé de sorte à ce qu'il se mette en cache automatiquement, permettant ainsi l'ouverture rapide de votre serveur et d'éviter au maximum les connexions refused. La machine virtuelle a été défragmenté et compactée de sorte à être beaucoup plus rapide et légère par les services proposés par "VMware". Les packages ont étés installés par l'utilitaire "pkg" et il vous permet donc de les supprimer afin d'augmenter leurs versions ou les rétrograder. Par exemple pour mettre mysql56 au lieu de la 55 vous tapez juste "pkg remove mysql55-server" et une fois la désinstallation finie vous tapez "pkg install mysql56-server". Listing des packages installés sur la VM Chose à savoir Les files installées sur cette machine virtuelle sont les 2016, les files ont étés éteintes, quêtes rechargées et les logs nettoyés pour éviter une surcharge inutile du VDI. Pour les sources, ceux-ci sont compilables, je me suis permis de régler le TIME BOMB pour que les files puissent se lancer sans soucis et pour que vous puissiez lancer les files directement, le MakeFile a été modifié de sorte à ce que vous puissiez obtenir un game et un db strippé ainsi que la version originale optimisée. Cependant, les sources ont été archivé au format .tar.gz pour éviter par la même occasion une surcharge du VDI au niveau de la taille, il se situe dans /usr/src/ vous aurez juste à entrer la commande "cd /usr/src && tar -zxvf mainline.tar.gz". Si vous ne savez pas compiler vous pouvez suivre le tutoriel de Calypso. Liste des modifications apportés sur les files Pour toute demande d'aide, veuillez poster dans la section appropriée qui est celle-ci. Cette machine virtuelle pourra être mis à jour à la demande des membres. La machine virtuelle a été upload au format .VDI pour ceux utilisant virtualbox ainsi qu'au format .VMDK pour ceux qui comme moi utilise VMware. Ils possèdent une taille de 9GO6 non compressés et une taille de 2GO compressé. Amusez-vous bien ! Le client/source client etc seront disponible en téléchargement directement sur le sujet des Files 2016 après approbation de @Calypso @ASIKOO @Mei Liens VDI : Contenu Masqué Contenu Masqué Liens VMDK : Contenu Masqué Contenu Masqué Liens Files Mirrorace: MEGA Liens Sources Mirrorace: MEGA: Le mot de passe MYSQL/SSH est : funky-emu Voilà, j'espère que celles-ci vous auront aider. La vie ou la mort, faîtes votre choix. Cordialement, #Saw.
  2. 5 points
    Bonjour à tous! Je viens vous partager un kit de développement complet pour RaiderZ dont je me servirai dans mes tutoriels / partages dans la section. Le kit est séparé en deux parties: Une partie contenant le serveur, le client, la base de donnée et les redistribuables: Client + Serveur + BDD + Redistribuables Et une autre partie contenant les sources et les SDK du jeu: Sources + SDK Le client est le dernier client américain en date (2015), et le serveur possède la majeure partie des tous derniers contenus du jeu, lors de sa fermeture. Dans la première archive sont inclus les redistribuables, dans le dossier Redist. Pour être sûr de pouvoir jouer sans soucis, installez les avant de lancer le client ! Les sources ont été légèrement retravaillées pour être compatibles avec Visual Studio 2017, et sont issues d'un Github public : (Lien ici) Mot de passe pour les archives: Funky-Emu.net --------------------------------------------------------------- MISES A JOUR Changelog: Lien des mises à jour: Contenu Masqué
  3. 4 points
    Bonjour et bonsoir à tous, Au vu de l'activité dans l'A/Q/S à ce sujet ainsi qu'à un problème de @Sufhal sur Discord, j'ai remarqué que les tutoriaux d'installation du World Editor tendaient à être flous ou pas assez explicatifs sur la manière dont il fallait l'installer, de ce fait, j'ai donc décidé de créer un tutoriel vidéo sur l'installation du World Editor ! La procédure est complète à l'exception près de la création de la partition "D:\" du disque dur. Ce tutoriel est très rapide, je l'ai réalisé d'une traite dans la vidéo, je m'excuse pour la petite erreur de langue qui s'est glissée au début ainsi que pour la petite erreur où j'ai dit "côté client" alors que c'était bel et bien "côté serveur" (j'ai fait une correction dans la vidéo). Les packs que vous devrez depacker : Effect ETC PC PC2 Property Terrain textureset Tree Zone Voici donc la vidéo !
  4. 3 points
    Bonjour à tous ! Tutoriel court et rapide pour créer un nouveau monde sur votre serveur RaiderZ. /!\ Vous êtes obligés d'avoir au moins un monde pour pouvoir jouer /!\ Pour commencer, ouvrez simplement Navicat, connectez vous à la BDD de votre serveur, et allez dans la base de donnée account, table "world". Pour rentrer un monde, appuyez sur "Inser", ou cliquez sur le + en bas de la fenêtre: Puis remplissez comme sur ce screen: server_id: ID du serveur de Login (par défaut sur le DevKit: 101) world_id: ID du monde (1,2,3,etc..) name: Nom du monde host_adress: Adresse des serveurs du monde (si tout est sur la même machine, c'est 127.0.0.1) port: Port du serveur de Login type: LoginServer curr_player: Laisser vide max_player: Nombre maximum de joueurs sur le monde last_update_time: Laisser vide servable: mettre t (pour true) alive_timeout: Laisser vide state: FINE order_num: Numéro du monde dans la liste des mondes côté client (commencez à 1) Voilà, vous avez un monde sur votre serveur ! Vous pouvez lancer votre serveur et vous connecter
  5. 3 points
    Salut ! Comme les tutoriels de @Takuma on été (si j'ai compris) totalement détruit par le changement de moteur forum, je vais essayer de reprendre ses tutoriels avec plus de détails, et en publiant du contenue régulièrement. J'espère faire au moins aussi bien qu'il l'a fait. Voilà pourquoi j'ai repris son nom de poste, et que je vais partir sur la même branche que lui. Introduction : Vous voulez apprendre à créer votre CMS metin2 ? Mais vous ne vous pensez pas capable d'apprendre tant de langage de programmation ? Pas d'inquiétude. Je vais vous guider pas à pas (dans l'élimination des pages de publicité... Ah non désolé ça c'est une pub !) pour vous familiariser avec l'HTML et le CSS. Je vous donnerais également quelques astuces en JavaScript, chose que il me semble @Takuma n'avait pas fait. Puis dans le même temps, nous allons parler de PHP, et même l'utiliser. HTML : L'HTML est un langage de balisage. Il permet de donner une structure à votre code. Tout seul, il ne rend rien de beau. la mise en page s'effectue avec un autre langage. CSS : Nous parlions de mise en page ? La voici. Le CSS est un lagage de style, il permet de mettre en page votre site web. Vous pouvez déjà commencer rien qu'avec ses connaissances basiques à créer un site web. Cependant, il sera nommé site statique. Pour la simple raison que aucune interaction ne sera possible avec votre site. Ces deux langages permettent une création de page de présentation par exemple. Impossible de faire un espace membre digne de ce nom ou autre. JavaScript/JS : C'est un langage de script. Il permet de faire des pages webs interactives. Malheureusement, nous ne pouvons nous contenter de celui-ci. Il est accessible au client, c'est à dire qu'il peut le modifier, et faire ce qu'il veut de son côté. PHP : Le PHP ! Mon petit chouchou. Le PHP lui, par rapport aux trois aux langages ci-dessus, est exclusivement interprété par le serveur, le client ne recevra jamais aucune ligne de PHP. Votre PHP est traduit dans les trois langages ci-dessus avant d'être envoyer au client. Cela vous permet des opérations sécurisées et efficaces. Ne négligez cependant pas la sécurité de votre site web, elle est primordiale. PHP est très pratique, mais s'il n'est pas maîtrisé, en mettre sur votre site peut-être comme vous tirez une balle dans le pied. Notre site web, se devra d'être complet. Comme je n'ai pas le temps de créer à la main un design, je ne l'évoquerai pas. Vous pouvez cependant utiliser vous des designs déjà partagés. Ou même créer le votre, vous trouvez tout ce dont vous avez besoin sur internet en vous renseignant sur l'HTML et le CSS. Avant de vous dire ce que contiendra notre site web, je dois vous parler de la canon, la belle, la jolie, la sacrée, la légendaire, la divine et céleste documentation PHP ! Elle est complète, claire, disponible en français, courte et efficace. Ce sera pour mes tutoriels votre bible. Oubliez vos religions elle, vous prierez elle, et seulement elle. Bien ! Que va contenir notre futur site web alors ? Un système de news, vous pourrez les gérer entièrement sans aucune manipulation technique grâce à son panneau d'administration qui vous permettra : Ajouter une news, Supprimer une news, Modifier une news, Épingler des news afin qu'elles soient visibles en priorité par rapport aux autres. Un espace membre complet : Inscriptions : Nom de compte, Mot de passe crypté Mot de passe clair si l'utilisateur le désire en cas de perte de mot de passe pour ne pas avoir à remettre à 0 son mot de passe : Panneau de prévention en quoi cette option est déconseillée. Mail valide. Acceptation des règles. Connexion, Gestion du compte : Suppression du compte, Modification du mot de passe, Gestion du mot de passe entrepôt si celui-ci est ouvert IG (activé), Changer son adresse mail. Inscription avec validation par mail. Un système de vote : Vérification du vote : Si le joueur a bien voté Si le temps entre les vote est respecté Accréditation des crédits si le vote est validé. Classements : Classement joueurs complet : Top 10 en page d'accueil, Classement habituel avec les pages. Classement de guilde complet : Top 10 en page d'accueil en fonction du niveau et des victoires. Classement habituel avec les pages. Option permettant de trier le classement par ordre décroissant/croissant. Option permettant de chosire le facteur pris en compte pour la classement : Niveau Nom (A->Z ou inversement) Nom du chef (A->Z ou inversement) Energie etc... Un ItemShop complet et opérationnel : Gestion des catégories : Ajout, Suppression, Modifications (ordre, nom, etc...). Gestion des items : Ajout, Suppression, Modifications (ordre, prix, nom, etc..). Les icons seront placés automatiquement grâce au pack icon qui sera uplodad dans une destination bien spéciale. Système de langue : Un fichier spécifique par langue, Modifiable sur le site, Choix pour chaque personne la langue désirée qui sera stockée grâce à un système de cookies s'ils sont acceptés par le client. Système de support : Comptes : Super-Administrateur (compte d'ID 1) : Ajout de Super Administrateur, Suppression, Tous les droits. Administrateurs (Implementor) : Toute la modérations et l'administration nécessaire. Modérateur (GM) : Toute la modération permettant de répondre au sujet sans avoir tous les droits d'un administrateur. Système d'installation : Configuration générale du site : Nom, Date, Copyrtight, etc... Configuration des base de données : Base de données du site : Nom de la base de données. Base de données du jeu : Nom des bases de données : Player, Account, Common. Adresse IP, Utilisateur, Mot de passe, Port, Administration : Configuration générale du site, Gestion des GM, Configuration des langues Gestion du jeu. J'oublie beaucoup de paramètre. Mais quand nous aurons déjà fait tout ça, nous aurons déjà travailler un petit bout de temps ! Vous êtes prêts ? Démarrage du tutoriel... Les pré-requis: Pour suivre ce tutoriel, vous n'aurez pas besoin de beaucoup de chose, mais elles seront toutes obligatoires. Un éditeur de texte adapté. Je ne compte pas vous faire un cours sur l'édition du code avec un bloc note, foncez prendre un éditeur adapté tel que : Sublime texte NotePad++ Atome DreamWeaver Un serveur WEB : Distant : Hebergement mutualisé VPS, dédié avec Apache Locale : EasyPHP, WAMP, XAMP. Des bases de données : Player Common Account Website Si vous avez besoin d'aide pour ceci, je vous aiderais en pv. Où non demandez à @Takuma ça l'occupera, d'après ce qu'il m'a dit il n'a rien à faire de ces vacances d'étudiant. Fainéant. L'arborescence : Mon arborescence est beaucoup utilisée, mais est des fois assez bizarre. Je vais m'adapter à une arborescence plus connu, cela donne : assets css js img pages db.php functions.php admin capatcha index.php Nous ajouterons plus tard des dossiers comme celui de l'installateur par exemple, mais celui-ci se fera à la fin. En attendant pour conclure cette première partie au même point que @Takuma l'avait fait, je vais vous faire créer une connexion PDO. La connexion à la base de données principale : Bien, pour ceci, nous allons nous rendre dans notre fichier index.php : Nous allons tout d'abord dire au site : "Je veux écrire du PHP", pour cela il n'existe qu'un moyen (enfin deux... mais utilisez celui là) : <?php //J'écris ici mon code PHP ?> Notez que tout le contenue précédé de // dans sa ligne est nommé commentaire. C'est à dire qu'il ne sera pas interprété par PHP, vous pouvez mette ce que vous voulez. Ce code ne sera pas visible pas le client non plus. Ici, à la différence de @Takuma Je vais directement inclure mon fichier nommé functions.php dans mon index. Ce fichier va contenir toutes les fonctions PHP, mais aussi la connexion à la base de données, vous verrez. <?php require_once('assets/functions.php'); ?> Il existe trois façon d'inclure du code d'un fichier dans un autre : require_once include require Ces méthodes ont toutes les trois le même but, mais elles ont des subtilités : include : Vous pouvez importez autant de fois que vous voulez le fichier. Si le fichier n'est pas trouvé le code ne s'arrête pas, et continue quand même. require : Vous pouvez inclure autant de fois que nécessaire le fichier dans un autre. Cependant, si une seule fois le fichier n'est pas trouvé, le code s'arrête net, puis affiche une erreur. require_once : Vous pouvez inclure seulement une seule fois un fichier dans un autre, et celui-ci doit obligatoirement être là, sinon erreur et arrêt immédiat du code. Bien, une fois ceci tapez, ouvrons notre fichier functions.php (assets/functions.php), puis tapez : <?php require('db.php'); ?> Ici, nous donnons cette instruction au fichier : Tu importes le fichier db.php qui se trouve dans la même destination que toi, si tu ne le trouves pas, tu coupes tout Franky ! Pourquoi ne pas avoir faire un require_once ? Vous comprendrez plus tard, nous allons importer souvent ce fichier. Passons pour finir à l'édition de notre fichier db.php : Nous allons créer quatre variables : IP : Elle contiendra l'adresse d'accès à nos base de données USER : Elle contiendra l'utilisateur PASS : Elle contiendra le mot de passe WEBDBNAME : Elle contiendra le nom de la base de données du site. Nous allons comme @Takuma créer une variable (un peu spécial) qui va contenir notre connexion PDO. Créons déjà nos variables, en PHP pour créer une variable nous utilisons : $ puis le nom de la variable (ne doit pas commencer par _ car c'est le prefix des super variables, nous verrons ça plus tard). Cela donne : <?php $IP = "192.168.1.29"; $USER = "root"; $PASS = "pF5tfiUH3f7KDyT49rQu52Hu88"; $WEBDBNAME = "website" ; ?> Adaptez selon vos identifiants. Nous allons par contre rajouter un petit code qui vous nous permettre d'afficher absolument tous les warnings/errors possibles et imaginables dès qu'il y en aura en ajoutant ces deux lignes avant la déclaration de notre variable IP : <?php ini_set('display-errors', true); error_reporting(E_ALL); ?> (Je n'ajoute les balises PHP que pour que vous puissiez profiter de la coloration syntaxique). Bien créons maintenant notre connexion dans un bloc try cela donne en théorie : Essaye de : Te connecter Si cela echoue : Tu coupes le code Tu affiches l'erreur Bien, je vous donne le code, vous ne pouvez pas le devinez de toute façon, en tout cela donne : <?php ini_set('display-errors', true); error_reporting(E_ALL); $IP = "192.168.1.29"; $USER = "root"; $PASS = "pF5tfiUH3f7KDyT49rQu52Hu88"; $WEBDBNAME = "website" ; try { $db = new PDO('mysql:host='.$IP.';dbname='.$WEBDBNAME, $USER, $PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); } catch (PDOException $e) { print "DATABASE ERROR : " . $e->getMessage() . "<br/>"; die; } ?> Et voilà, vous avez crée votre variable $db qui contient les informations nécessaires à l'utilisation complète de PDO. J'espère avoir été claire, désolé j'ai pas vraiment l'habitude de faire des tutoriels. D'habitude je reste un peu inactive, en ninja sur les autres forums. Bonne lecture !
  6. 3 points
    Bonjour à tous, après avoir vu comment implanter un objet : ici Nous allons voir comment configurer cet objet. C'est-à-dire, choisir ou modifier son nom, son type, son prix, ses bonus etc Bref, passer d'un pâle copier/coller à un objet adapté à VOS besoins. Ce tutoriel va présenter, en même temps, ces 3 fichiers : - item_proto.txt (files 2013+) - item_proto.sql (files 2012-) - item_proto.xml (client) Sommaire (vous pouvez cliquer directement dessus...) [anchorUrl=1]Vnum[/anchorUrl] [anchorUrl=2]Nom local[/anchorUrl] [anchorUrl=3]Nom[/anchorUrl] [anchorUrl=4]Type et Sous-type[/anchorUrl] [anchorUrl=5]Taille[/anchorUrl] [anchorUrl=6]Antiflag[/anchorUrl] [anchorUrl=7]Flag[/anchorUrl] [anchorUrl=8]Wearflag[/anchorUrl] [anchorUrl=9]Immune[/anchorUrl] [anchorUrl=10]Prix de vente marchand / joueur[/anchorUrl] [anchorUrl=11]Prix de vente joueur / marchand[/anchorUrl] [anchorUrl=12]Vnum de l'objet une fois up[/anchorUrl] [anchorUrl=13]Matériel pour up l'objet[/anchorUrl] [anchorUrl=14]Chance d'avoir un bonus à la création de l'objet[/anchorUrl] [anchorUrl=15]Limitations[/anchorUrl] [anchorUrl=16]Valeur des limitations[/anchorUrl] [anchorUrl=17]Bonus[/anchorUrl] [anchorUrl=18]Puissance des bonus[/anchorUrl] [anchorUrl=19]Values[/anchorUrl] [anchorUrl=20]Nombre d'emplacements libre[/anchorUrl] [anchorUrl=21]Dm/Dc automatique[/anchorUrl] [anchorUrl=22]Specular[/anchorUrl] Explication : Entre parenthèses vous trouverez le nom des colonnes des 3 fichiers correspondant à la description Nom local (Colonne dans le fichier TXT / Colonne dans le fichier XML / Colonne dans le fichier SQL) Ou Wearflag (Colonne dans le fichier TXT / Colonne dans les fichiers XML et SQL) [anchor=1]Vnum (ITEM / vnum) C'est le numéro (ou l'ID) de votre objet. Celui que vous utilisez pour avec la commande gm /i Certains objets sont gérés par le serveur via ce vnum. Changer leur vnum provoquera des bugs. Le vnum de vos armes et de vos armures DOIT être inférieur à 65536. [anchor=2]Nom local (ITEM_NAME(K) / hashName / name) Il s'agit d'un nom demandé par certains fichiers de votre serveur (notamment ceux de drops), le choix de ce nom vous appartient. XML : il doit être entouré par des ' ', sachez qu'il ne sert à rien : vous pouvez mettre ' '. [anchor=3]Nom ( / name / gb2312name) Il s'agit du nom traduit de votre objet. TXT : vous devez mettre ce nom dans le fichier item_names.txt. [anchor=4]Type (ITEM_TYPE / type) ET Sous-type (SUB_TYPE, subtype) Le type et le sous-type sont des éléments très importants, mieux vaut ne pas se tromper ! Voici la liste des différents type (dernière maj pour les files 2016) : Signifie : - que les objets de type 1 sont des armes - que les objets de type 1 et de sous-type 1 sont des dagues Donc pour créer des dagues, vous devez mettre : pour les XML, SQL : 1 dans la colonne type et 1 dans la colonne subtype pour les TXT : ITEM_WEAPON dans la colonne TYPE et WEAPON_DAGGER dans la colonne SUB_TYPE Si aucun sous-type n'est précisé, vous devez mettre 0 dans la colonne du sous-type (quelque soit le fichier). Pour gagner en lisibilité, tous les types sans intérêt particulier (objet inerte) sont représentés par le caractère / 0. ITEM_NONE : / ITEM_WEAPON : Arme 0. WEAPON_SWORD : Épée à une main 1. WEAPON_DAGGER : Dague 2. WEAPON_BOW : Arc 3. WEAPON_TWO_HANDED : Épée à deux mains 4. WEAPON_BELL : Gong 5. WEAPON_FAN : Éventail 6. WEAPON_ARROW : Flèche 7. WEAPON_MOUNT_SPEAR : ?? aucun intérêt ? 8. WEAPON_CLAW : Griffe (non configuré pour les files 2016 FE) 9. WEAPON_WEEDING : Objet de mariage (non configuré pour les files 2016 FE) [*]ITEM_ARMOR : Équipement, autre que arme 0. ARMOR_BODY : Armure 1. ARMOR_HEAD : Casque 2. ARMOR_SHIELD : Bouclier 3. ARMOR_WRIST : Bracelet 4. ARMOR_FOOTS : Bottes 5. ARMOR_NECK : Collier 6. ARMOR_EAR : Boucles d'oreilles 7. ARMOR_NUM_TYPES : / [*]ITEM_USE : Objet à utilisation unique 0. USE_POTION : Potion de régénération 1. USE_TALISMAN : Parchemin de téléportation 2. USE_TUNING : Parchemin de up 3. USE_MOVE : / 4. USE_TREASURE_BOX : / 5. USE_MONEYBAG : / 6. USE_BAIT : Appât pour la pêche 7. USE_ABILITY_UP : Potion offrant un bonus au joueur 8. USE_AFFECT : Potion bonus2 9. USE_CREATE_STONE : Sacoche offrant une pierre aléatoire (vnum compris entre 28000 et 28013) 10. USE_SPECIAL : Objets intégralement gérés par le game, par rapport au vnum (à ne pas changer) 11. USE_POTION_NODELAY : Potion de soin immédiat 12. USE_CLEAR : Potion pour supprimer tous les effets négatifs sur le joueur (comme la compétence Soin) 13. USE_INVISIBILITY : Potion d'invisibilité (celle des gm !), durée 5 minutes 14. USE_DETACHMENT : Parchemin de pierre d'esprit 15. USE_BUCKET : / 16. USE_POTION_CONTINUE : Potion de régénération de santé après la mort 17. USE_CLEAN_SOCKET : Livre de pierre 18. USE_CHANGE_ATTRIBUTE : Changement de bonus 1/5 19. USE_ADD_ATTRIBUTE : Ajout de bonus 1/4 et 6/7 20. USE_ADD_ACCESSORY_SOCKET : Diamant 21. USE_PUT_INTO_ACCESSORY_SOCKET : Minerai 22. USE_ADD_ATTRIBUTE2 : Ajout de bonus 5 23. USE_RECIPE : Recette 24. USE_CHANGE_ATTRIBUTE2 : Changement de bonus 6/7 25. USE_BIND : Liaison de l'âme 26. USE_UNBIND : Extraction de l'âme 27. USE_TIME_CHARGE_PER : rechargeur de DragonSoul (durée en %) 28. USE_TIME_CHARGE_FIX : rechargeur de DragonSoul (durée fixe) 29. USE_PUT_INTO_BELT_SOCKET : Minerai pour ceinturon 30. USE_PUT_INTO_RING_SOCKET : ? 31. USE_SET_SOULBIND (non implanté sur les files FE 2016) 32. USE_DEL_SOULBIND (non implanté sur les files FE 2016) 33. USE_NEW_UNK2 (non implanté sur les files FE 2016) [*]ITEM_AUTOUSE : / [*]ITEM_MATERIAL : Matériel 0. MATERIAL_LEATHER : / 1. MATERIAL_BLOOD : / 2. MATERIAL_ROOT : / 3. MATERIAL_NEEDLE : / 4. MATERIAL_JEWEL : / 5. MATERIAL_DS_REFINE_NORMAL : matériel pour améliorer les dragonSoul 6. MATERIAL_DS_REFINE_BLESSED : matériel pour améliorer les dragonSoul 7. MATERIAL_DS_REFINE_HOLLY : matériel pour améliorer les dragonSoul [*]ITEM_SPECIAL : / [*]ITEM_TOOL : / [*]ITEM_LOTTERY : / [*]ITEM_ELK : Yang [*]ITEM_METIN : Pierre 0. METIN_NORMAL : pierre classique 1. METIN_GOLD : pierre rare (nécessite des emplacemens spéciaux sur les objets !) [*]ITEM_CONTAINER : / [*]ITEM_FISH : Poisson 0. FISH_ALIVE : Poisson vivant (récompense à configurer dans fishing.txt : tutoriel) 1. FISH_DEAD : Peut-être grillé sur le feu de camp [*]ITEM_ROD : Canne à pêche [*]ITEM_RESOURCE : / [*]ITEM_CAMPFIRE : Feu de camp [*]ITEM_UNIQUE : Objet item-shop (limité dans le temps) (équipable) 0. UNIQUE_NONE : / 1. UNIQUE_BOOK : / 2. UNIQUE_SPECIAL_RIDE : Objet pour monture (utilisable par quête avec le flag adéquat(512)) 3. UNIQUE_3 : Objet pour monture 4. UNIQUE_4 : Non configuré 5. UNIQUE_5 : Non configuré 6. UNIQUE_6 : Non configuré 7. UNIQUE_7 : Même intérêt que les objets 3/7 (non équipable) 8. UNIQUE_8 : Non configuré 9. UNIQUE_9 : Non configuré 10. USE_SPECIAL : Sont équipables/déséquipables ou Paquet de soie (vnum 71049) [*]ITEM_SKILLBOOK : Livre de compétence [*]ITEM_QUEST : Objet gérable par les quêtes (à l'aide du .use) [*]ITEM_POLYMORPH : Orbe de polymorphie [*]ITEM_TREASURE_BOX : Coffre à ouvrir à l'aide d'une clé [*]ITEM_TREASURE_KEY : Clé pour ouvrir un coffre de type 20 (drops configarables dans special_item_group.txt) [*]ITEM_SKILLFORGET : Livre de l'oubli [*]ITEM_GIFTBOX : Coffre sans clé (à configurer dans special_item_group.txt) [*]ITEM_PICK : Pioche [*]ITEM_HAIR : Coiffure (ancienne version) [*]ITEM_TOTEM : ??? (équipable mais non déséquipable ?) [*]ITEM_BLEND : Rosée (potion configurable dans blend.txt) [*]ITEM_COSTUME : Costume (équipable) 0. COSTUME_BODY : costume d'armure 1. COSTUME_HAIR : coiffures costumée 2. COSTUME_WEAPON : arme costumée 3. COSTUME_ACCE : étoles 4. COSTUME_MOUNT : objet pour monture (utilisable par les quêtes) [*]ITEM_DS (équipable) 0. DS_SLOT1 : ?? 1. DS_SLOT2 : ?? 2. DS_SLOT3 : ?? 3. DS_SLOT4 : ?? 4. DS_SLOT5 : ?? 5. DS_SLOT6 : ?? [*]ITEM_SPECIAL_DS ?? (équipable) [*]ITEM_EXTRACT : Extracteur de DragonSoul 0. EXTRACT_DRAGON_SOUL : ?? 1. EXTRACT_DRAGON_HEART : ?? [*]ITEM_SECONDARY_COIN : Monnaie secondaire, non configurée ? [*]ITEM_RING : Anneau, fonctionnel ?? (équipable) [*]ITEM_BELT Ceinture, fonctionnelle ?? (équipable) (possibilité de mettre du minerai ?) [*][anchor=5]Taille (SIZE / size) Représente le nombre de case que va prendre votre objet. Par exemple 1 pour les dagues, 2 pour les arcs, 3 pour les épées à deux mains. [*][anchor=6]Antiflag (ANTI_FLAG / antiflag) L'antiflag met des restrictions sur l'utilisation de l'objet.
  7. 2 points
    Bonjour à tous, Je me présente officiellement pour le piste de spécialiste pour la section RaiderZ, je pense avoir les compétences pour gérer la section et aider les autres pour l'émulation de ce jeu ! Présentation IG je suis Illian / Alex43 / Kijaru, présent sur le forum depuis 2009, avec mon premier compte créé en 2010. Beaucoup me connaissent notamment pour ce que j'ai fait en 3D et C++ dans l'émulation Metin2. IRL je m'appelle Henri, j'ai 20 ans, en études de finances (rien à voir du coup ). Au niveau de mon caractère, j'aime bien aider les gens, et partager mes connaissances (tant qu'on ne me prend pas pour une vache à lait juste bonne à écrire des tutoriels). Je pense avoir un bon niveau de français, le plus souvent si vous voyez une faute c'est plus une faute de frappe qu'une faute de langue, et je sais écrire des pages et des pages tout comme je sais synthétiser (merci les cours de Management ). Je suis calme et posé, même si j'ai tendance à vite devenir très enthousiaste, et me lancer dans des projets sans réfléchir ni au temps que ça va prendre, ni aux conséquences, ni aux moyens à mettre en œuvre (cc @Natsuryu ). En revanche, je suis assez attaché à l'apprentissage, je pense que tout le monde peut réussir, pour peu qu'il accepte de sortir des tutoriels et de chercher par lui-même, peu importe le domaine. C'est, après tout, comme ça que l'émulation a progressé à travers le temps. Compétences Ayant commencé mon travail dans l'émulation avec Metin2, j'ai appris à explorer des fichiers, à ne pas avoir peur d'ouvrir tout et n'importe quoi avec Notepad++ ou un éditeur hexa pour en voir le contenu, à mettre en place un serveur de jeu, et à modifier un client. Courant 2013 je me suis lancé dans la 3D, en adaptant des modèles 3D d'autres jeux sur Metin2, et en commençant à apprendre la modélisation et l'animation 3D.7 Plus tard, vers 2014/2015 je me suis mis au C++ avec le partage du code source de Metin2, ralentissant mon apprentissage de la 3D jusqu'à presque complètement l'arrêter pour me consacrer au codage. Sur RaiderZ, que j'ai découvert l'année dernière, j'ai appris les opérations basiques: ajouter / modifier des items ,des PNJ, des maps, des téléporteurs, etc... Je sais bien entendu créer un serveur, le configurer, déboguer les programmes qui le constituent, et effectuer des maintenances. Pour une petite snapshot de mes compétences, vous pouvez jeter un œil à mes tutoriels, qu'ils soient sur Metin2 ou RaiderZ. Disponibilités Mes disponibilités ne sont pas fixées dans le marbre, mais n'ayant cours que deux jours par semaine, je serai très disponible pour animer la section. Mes horaires, en revanche, ne sont pas fixes, je passerai très régulièrement dans tous les cas ! Conclusion Je suis conscient de mon passé sur le forum, pendant ces 8 années il y a eu du bon et du mauvais, que ça soit en tant que staffien ou en tant que membre. Je n'ai pas à cacher que j'ai été parfois un véritable enfoiré avec certains, et que j'ai claqué la porte du staff. Deux fois. Je ne minimiserai pas ce que j'ai fait, je l'assume, voilà, on a tous fait des conneries du genre, je profite simplement de ce topic pour m'excuser auprès de ceux que, par mon comportement, j'aurai blessé et/ou injurié par le passé. Je pense avoir montré cette dernière année que j'ai changé, que je peux être actif et présent sur le forum, sans dérapages, que je peux à nouveau écrire des tutoriels, répondre à l'A/Q/S, et être critiqué sans partir en live comme c'était le cas auparavant. Je vous demande donc, pour rendre votre décision, de prendre en compte tout ce que j'ai pu faire sur le forum, du premier jour à aujourd'hui, du bon comme du mauvais, des tutoriels aux injures, et de peser le pour et le contre de ma candidature. Merci d'avoir lu cette candidature !
  8. 2 points
    Bonjour, aujourd'hui je vous partage une API dont j'en suis l'auteur. Cette API sert pour tout ce qui est sur le client de jeu Dofus 1.29, c'est-à-dire : Les news RSS Inscription via le client de jeu Affichage du captcha qui peut-être regénéré Affichage des réponses de "Comment avez-vous connu Dofus ?" Les cadeaux (les Dofus sur la connexion sont des cadeaux d'abonnement à la base) Le statut des serveurs L'API gère aussi les différentes communautés du jeu, j'entends par la la gestion des langues (FR, EN, DE, ES, IT, PT, NL) qui sont présentes dans le client. Les news RSS Inscription via le client de jeu Les cadeaux Le statut des serveurs Pour utiliser cette API il vous faut avoir composer, composer est un gestionnaire de dépendances qui vous servira pour importer les bibliothèques nécessaire au fonctionnement de l'API. Il vous aussi posséder une base de données MySQL ou MariaBD, ces deux systèmes de base de données sont "identiques". Il vous faut activer la ré-écriture d'url sur votre serveur web. Une documentation est disponible sur le dépôt de l'API. L'API ainsi que les sources sont disponibles sur le dépôt github.com.
  9. 2 points
    Salut ! Avant de suivre cette partie, je vous invite à lire la précédente : Je vais ici essayer de vous faire découvrir HTML, CSS, JS et PHP. Voici les différents objectives de cette partie : Découvrir les éléments basiques de l'HTML tels que : La doctype Différents balises : Les principales balises telles que le p,h1,ul,td... Les principales balises orphelines telles que le hr, br... Les formulaires qui seront très utiles pour la suite, Les tableaux, Les liaisons : CSS, JS. PHP : Découverte de PDO : Créer sa requête : Préparation, Insertion de données, Exécution, Traiter les données : Nombre de ligne affectée, Colonne affectée, Ligne des colonnes affectées. Divers. Nous avons un emploi du temps assez chargé, nous ferions mieux de nous y mettre maintenant ! HTML: HTML est un langage de balisage. Il dispose de balise. Je vous propose une petite liste, qui résume les principales balises. @ASIKOO Il faudrait un système pour faire des cartes mentales ! ! (Je sais pas si c'est toi que je devais taguer, mais tu m'as l'air d'être le seul actif...). Sauf si je précise que les balises sont orphelines, elles devront être ouvertes puis fermées. Utilisez pour les fermer la même balise que pour les ouvrir, mais ajoutez un "/" exemple : <p>Message</p> Des balises assez spéciales : <!DOCTYPE html> Elle au dessus de tout votre code HTML. Elle est obligatoire, même si le code marche sans, pas de question, c'est obligatoire. Balise orpheline. <head>.. </head> Se place après la balise de doctype. Elle contient les informations complémentaires de la pages telles que : Le titre, Les mots clés, Les importations de : CSS, JS. Toutes les méta-informations. <body> .. </body> Se place après la balise de fermeture </head> Contient littéralement le corps de la page. C'est tout ce qui sera affiché au client. Les balises principales : Texte brut : <p> : Permet de rédiger un paragraphe. <h1>,<h2>... <h6> Permet d'écrire un titre plus ou moins important. L'évolution de l'importance est décroissante par rapport à la valeur associée à h. Les tableaux, un tableau ce compose de ces balises : <table> : Désigne le début et la fin du tableau, <tr> : Désigne une ligne du tableau, <td> : Désigne une cellule du tableau. On va donc créer un tableau comme ceci : <table> --> On crée le tableau <tr> --> On crée une nouvelle ligne <td>.. </td> --> On crée les colonnes en désignant les cellules </tr> --> On marque la fin de la ligne <tr> --> On crée une nouvelle ligne <td>.. </td> --> On crée les colonnes en désignant les cellules </tr> --> On marque la fin de la ligne </table> --> On marque la fin du tableau Il existe aussi (mais nous en reparlerons si nécessaire) : <thead> <tfoot> <tbody> Liste dite ordonnée : <ol> <li> élément </li> </ol> Liste dite non ordonnée : <ul> <li> élément </li> </ul> Je n'ai pas d'autre balise en tête dans l'instant présent. Si une balise que l'on va utiliser n'est pas présente dans ce petit regroupement, je vous l'expliquerais le moment venu. Je vais maintenant vous parlez des liaisons. Si vous ne le savez pas encore l'html, le css, et le javascript ne se mettent pas dans le même fichier pour des raisons évidentes de : Propretés, Efficacités Facilités. Il y a deux types de lignes différents qui se mettent tous les deux dans l'entête (head) du fichier html : <link href="assets/css/style.css" rel="stylesheet"> Ici, nous importons, créons un lien entre les deux fichiers. Notez que la seule valeur à changer est celle du href="" (Qui désigne une destination) vers la destination du fichier voulu. <script src="assets/js/modernizr.js"></script> Cette balise est assez bizarre je sais. Vous n'avez qu'à changer la destination nécessaire dans la valeur de l'attribue src. Je vous propose d'entamer maintenant PHP, PDO : PHP --> PDO: Bien, je vous rappelle que nous avons déjà crée notre connexion PDO stockée dans la variable db. Je vous propose pour commencer de déjà vous apprendre à créer une fonction en php. Une fonction vous permet d'effectuer un protocole plus ou moins long sans devoir le retaper entièrement. C'est le même principe que les fonctions en mathématiques, sauf qu'ici, nous ne faisons pas qu'ajouter des nombres, multiplier, etc... La structure d'une fonction est assez simple : <?php function GetUserIP(){ } ?> Ici, nous avons crée notre fonction nommée GetuserIP. Si votre fonction prends en compte des paramètres, (comme un x en mathématiques par exemple), vous les ajouterez entre les parenthèses, sous forme de variable, et séparés par des virgules. Ici, je vous montre une fonction assez technique, ça va peut-être, être même la fonction la plus compliquée que nous allons faire avec ce CMS. Car clairement... Il n'y a rien de compliqué sur un CMS Metin2. Bien, avant de commencer à écrire notre code, il sera préférable de savoir exactement ce que va faire la fonction. Pour des raisons de sécurités, nous allons vérifier que l'utilisateur dispose bien d'une IP valide, et que le serveur peut "capter". On ne sera pas à l'abri des VPNs, mais c'est déjà mieux que rien. Nous allons définir pour commencer trois variables qui contiendront : client L'ip de la personne enregistrée si possible forward L'ip malgré un proxy remote L'ip du client qui demande la page courante Pour cela nous allons utiliser une super variable. Si vous avez lu l'autre tutoriel, vous savez que les supers variables commencent toutes pas : $_ ici, nous allons utiliser la super variable server, donc : $_SERVEUR. Pour client et forward, nous allons mettre un arobase devant le dollars. Pour un soucis de type, je m'attarde pas là dessus, nous ne l'utiliserons plus de toute façon... Vous ne pouvez pas deviner le code, sauf si vous chercher des heures sur la doc, cela donne : <?php $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; ?> Bien, nous allons maintenant vérifier si au moins client ou forward à le format d'une IP, sinon, nous utiliserons remote. Nous allons pour ça faire un bloc de condition facilement représentable grâce à ce schéma : On définie la variable client On définie la variable forward On définie la variable remote Si client ressemble à une IP valide, si oui : On assimile sa valeur à une autre variable nommée IP Si client n'a pas l'air d'être une IP valide : On vérifie si forwad là, si oui : On assimile sa valeur à une autre variable nommée IP Sinon : On assimile la valeur de remote à la variable nommée IP. Pour vérifier son format, on va utiliser une filtre, pas d'expression régulière c'est démodée. Vous ne pouvez pas le deviner, cela donne : <?php $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)){ $ip = $client; }elseif(filter_var($forward, FILTER_VALIDATE_IP)){ $ip = $forward; }else{ $ip = $remote; } ?> On utilise donc les outils if --> Il veut dire "Si", soit : Si ce que je te dis dans la parenthèse est vrai (=true) alors : Il fait ce qu'il y a entre les accolades. Si la condition est respectée, on sort de la boucle. elseif marche comme le if à une différence près : Il ne peut être placé qu'après un if Ne s'exécutera que si le if n'est pas respecté Si la condition est respectée, on sort de la boucle. else --> Si aucune des conditions n'est respectées, le code fait ce qui se trouve dans le else. Sachez que additionner des if à la suite, et mettre des elseif n'a pas le même effet. Si vous enchainez des if, le code va tous les essayer un par un. Si vous mettez des elseif, il va tous les vérifier dans l'ordre, mais dès qu'il aura trouvé une solution, il ne va plus suivre les autres elseif de ce bloc. Il ne nous reste plus qu'une chose à faire : Vérifier si la variable IP est définie Si non : On sort de la condition en affichant une erreur Si oui : On retourne l'IP en sortit de variable Je vous montre une autre façon de faire un if (pas de panique, il n'en n'existe que deux) je vous explique après, notre fonction donne : <?php function GetUserIp(){ $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)){ $ip = $client; }elseif(filter_var($forward, FILTER_VALIDATE_IP)){ $ip = $forward; }else{ $ip = $remote; } if(!isset($ip)) exit("ERREUR"); return $ip; } ?> Quelques petites précisions : La méthode exit permet de retourner une erreur et d'arrêter le script actuel, il va bloquer l'utilisateur. La méthode return permet de sortir de la fonction en retournant une valeur, ici l'ip. La méthode isset() permet de vérifier si une valeur est définie ou non. Ajouter un ! devant des méthodes telles que isset inverse leur fonctionnement. En quelque sorte nous faisons ici : Si l'ip n'est pas définie : Tu dégages le mec avec un bon coup de pied au cul Sinon, tu le laisse passer ! Et voilà vous avez fait votre première fonction ! Et pas des plus facile en plus. S'il y a du code que vous ne comprenez pas. La divine bible est là pour vous. Bien, allons enfin au vif du sujet : PDO. Pour envoyer une query au serveur, nous allons : Stocker notre requête dans une variable Lui attribuer des paramètres si nécessaires Exécuter la requête. Pour cela nous allons stocker notre requête dans une variable en utilisant un facteur d'affectation. Nous allons pour ça nous servir de la variable DB de la dernière fois. Si vous utilisez la variable $db dans une fonction, il faudrait que vous refassiez un include dans cette même fonction. Bien, on va préparer une query, on va utiliser : db->prepare(query); On va assigner ça à la variable $Akihira par exemple, tapons : <?php $Akihira = $db->prepare(); ?> Bien, nous allons taper une query au hasard, par exemple une assez simple : <?php $Akihira = $db->prepare("SELECT * FROM account.account"); ?> Bien, ici pas besoin d'attribuer des paramètres, vous pouvez exécuter votre fonction comme ceci : <?php $Akihira = $db->prepare("SELECT * FROM account.accoun"); $Akihira->execute(); ?> Maintenant, nous avons trois façon de récupérer des informations sur ce que nous avons fait : Savoir combien de ligne ont été affectée, ici cela nous renvoie le nombre de compte crée en réalité? rowCount(); Sélectionner les lignes affectées avec les colonnes indiqués fetch(); Sélectionner toutes les les colonnes de toutes les lignes affectées. fetchAll(); Bien, pour le rowCount(); c'est le plus simple, tapez : <?php $Akihira = $db->prepare("SELECT * FROM account.accoun"); $Akihira->execute(); $Akihira = $Akihira->rowCount(); ?> Ici, comme nous avons tout sélectionner ("*"), au niveau où vous êtes pour l'instant, il n'y a pas de différence, mais ne vous habituez pas à ça, il y en aura bientôt ! Pour le fetch, il va vous créer un tableau, il va falloir utiliser une méthode spécial pour obtenir les résultats. Mais on va voir ça dans un prochaine tutoriel où je vous parlerais plus en détails des tableaux, et on verra aussi la boucle foreach je pense pour pouvoir parler plus en détail du fetchAll. En attendant je vous dis merci d'avoir lu, et référé vous à la doc en attendant Salut !
  10. 2 points
    Bon, faisant de hauts rapports aux techniciens de GameForge concernant ce jeu totalement buggé j'ai décidé d'aider un peu les serveurs en retard histoire de vous montrer qu'il y a plus d'un glitch/bug using etc... ça fait froid dans le dos sachant que parmi certains bugs using il y en a pas mal qui permet de bien niquer l'économie de vos serveurs :nuit: Bref, en premier lieu merci aux gérant de funky émul de changer l’emplacement de mon poste parce-que je n'y comprends rien dans ce rangement.. Un peu la flemme d'écrire en détaille les glitch/bug using donc je vous balance mes vidéos flou :zen: Mariage sans anneau de couple : Contenu Masqué Farm une metin sans prendre l'aggro : Contenu Masqué Augmentation gratuite de niveau chez l'Alchimiste : Contenu Masqué Cela ne fonctionne pas ? Testez donc qu'on rigole un peu. :clap: Pas de code tout fait pour aider ? Nop désolé je suis une pur bouze dans ce domaine. A vos clavier !
  11. 2 points
    Salut ! Dans le but que tout le monde soit sur le même pied, et encourager les administrateurs à sans cesse augmenter leur protection, je vous propre d'apprendre brièvement à extraire des fichiers cachés dans un autre grâce au programme Enigma. Pour cela, vous aurez besoin de ce petit programme : Contenu Masqué Virus total, comme il est obligatoire pour la section des cheats : Contenu Masqué L'utilisation est simple : Vous sélectionnez par la biais de ce bouton un fichier .exe ou .dll Puis, vous cliquez sur le bouton "Unpack", et un fichier va se crée avec le contenu caché. Il est possible que ce programme ne marche pas avec les prochaines mises à jours de Virtual Box, car il parlait il me semble dans la premium de crypter les fichiers Certain client, comme celui de LegendOfMetin ont caché leur index dans un fichier .bin (ou .dat, j'ai un trou de mémoire), n'hésitez pas à changer l'extension du fichier afin de pouvoir utiliser ce programme Vous êtes maintenant prêts. Succès.
  12. 2 points
  13. 2 points
  14. 1 point
    Hello, Vu que je n'arrivais pas à lire directement les 350 sprites avec FD ou Sothink (sans aller dans le SWF puis les sprites) , je me suis morph dans les 350 formes que j'ai screenshot. A la base, je devais juste les screenshot (d'où la console avec le morphID dessus) puis au final j'ai trouvé la force de renommer toutes les images & j'en profite pour les partager. Source des 350 sprites : Les images : Contenu Masqué des 350 sprites.zip Un Screenshot : Contenu Masqué Bonne soirée, Dietoreborn.
  15. 1 point
    dans la db player item attr rare je crois,
  16. 1 point
    Bonsoir, Ce matin je rechercher la quête pour le skill P, mais elle ne ma pas trop plus, j'ai alors décidé de la refaire en la simplifiant. Elle met les skills ainsi que les competence en P En espérant qu'elle voit soit utile !
  17. 1 point
    Non tu n'as pas la clé tu as le MapData décrypté seulement. Le problème est que l'émulateur doit avoir aussi la clé de déchiffrement pour l'envoyer au client pour que ce dernier charge la map. Le résultat que tu obtiens sans le X est "normal". Comme il arrive à charger la map, le client essaye d'interpréter le MapData mais comme tu ne lui pas la clé, il travaille sur le MapData chiffré et donc le résultat n'a aucun sens. Du coup, étant donné qu'apparemment tu as le MapData déchiffré en BDD, pour faire fonctionner la map, tu peux éditer le swf et changer le MapData chiffré par le MapData déchiffré (et surtout n'oublie pas de backup avant on sait jamais !). Ca a même des avantages : tu réduis la taille du packet vu que tu n'a pas de clé à transmettre et le client ne doit pas faire de calculs pour déchiffrer.
  18. 1 point
    D'après ton code, si t'ouvre l'interface de création, ton pet disparaîtra encore. Je te propose un petit correctif supplémentaire. Remplace: if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) || (IsSummoned() && m_pkOwner->IsCubeOpen() || m_dwduration <= 0) || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID()) || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner() ) Par: if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead() || m_dwduration <= 0) || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID()) || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner() )
  19. 1 point
    Parfais je te remercie je te contacte 😊
  20. 1 point
    T'es pas sur OG ici, si tu lances un nom de forum on te ban pas
  21. 1 point
  22. 1 point
    Salut ! Dommage que (dans beaucoup de tutoriels) tu survoles seulement la chose. Tu pourrais aller beaucoup plus loin en expliquer toutes les fonctions. Certaines comme le len() sont parfois très utiles. En plus de cela, elles sont simples. Ça reste malgré ça un bon tutoriel, merci.
  23. 1 point
    Hey, quand on parle du loup (sans mauvais jeu de mot) ! Ce partage du lycan est très vieux et déjà à l'époque je disais que c'était une usine à gaz. Pour faire simple : aucun partage du lycan n'est vraiment fonctionnel. Peut-être que certaines sources l'ont mais après il faut vérifier que le lycan est le même que l'officiel. Personnellement, j'ai fait le mien en me basant sur tout ce qu'il pouvait y avoir dans le dev_wolfbranch et tout le reste je l'ai fait en me basant sur les ninjas. Le saignement je l'ai fait en me basant sur le poison. Les bandages je les ai fait en me basant sur la carpe (ou le poisson qui retire les malus). Courage, c'est plus long que difficile, j'ai du y passer 2-3 semaines sans aucune documentation (que ce soit sur le dump_proto, les skills, les bonus, les avancées de l'officiel etc.)
  24. 1 point
    Outch, il y a beaucoup de chose à faire et beaucoup de debug aussi... Le seul qui a réussi à le faire est @Galet. Bonne chance quand même !
  25. 1 point
    Salut, j'ai déplacé ton sujet dans l'AQS, la FAQ sert plutôt à donner des réponses aux questions fréquentes qu'à en poser. En fait les types de réponses ont apparemment été mal remplis (ou oubliés après des tests). Pour corriger le problème, il faut aller dans la base de données 'ancestra_game' et ouvrir la table 'npc_reponses_actions'. La Fée Risette a 2 dialogues de réponses : 7491 (reset sort) et 7490 (reset stats), chacun ayant 2 lignes dans la table. Recherche ces valeurs dans la colonne ID, et modifie les afin d'avoir les 4 lignes comme suit : ID type args 7490 13 7490 1 DV 7491 14 7491 1 DV Pour la petite explication cela signifie que pour la réponse 7490 il y aura une action d'id 13 (reset des stats) et une action d'id 1 avec l'argument DV qui permet de quitter le dialogue. Même chose pour la réponse 7491 où l'action d'id 14 permet un reset de sort. Pour finir note que ce ne sera pas exactement comme dans l'officiel qui lui permet deux remises à zéro différentes des statistiques cependant l'émulateur n'en permet qu'une.
  26. 1 point
    Hmm le capitalisme a son paroxysme... Je ne crache pas sur le fait que vous essayer de monter une entreprise etc, mais on se rend directement compte que vous n'avez pas du tout réfléchie à un Business Plan pour votre société. Si on regarde bien en détail ce que vous faites, vous louez des serveurs dédié dans l'une des plus grosses/ plus connue des plateforme d'hébergement sur le marché, et vous sous-louer de petit clusters à des prix abordable, certes, mais qui ne casse en rien le marché actuel. Pardon de vous décevoir mais vous avez tout intérêt, si vous souhaiter vraiment que votre projet se concrétise, à revoir entière votre business plan et à faire ce travail d'auto-critique en amont. Souvenez-vous que ce qui est important c'est "Qu'est-ce que j'ai, que les autres n'ont pas ?" - Et pour le coup l'argument du prix plus bas n'est pas valable
  27. 1 point
    INTRODUCTION : Amis, Camarades, Confrêres. Aujourd'hui est un GRAND jours pour nous WoW Emuliens. Morpheus-Server Ouvre ses portes ! Morpheus-Server : est un serveur en développement sur la vielle, vue et revue version 3.3.5a. Mais ne partez pas dés maintenant ... Lisez le reste ça peut vous intéresser. Le serveur est plutôt axé PvP, mais la partie PvE n'est pas négligeable. Mais je vais vous expliquez ça un peu plus en bas. MORPHEUS - PVP : Comme je l'ai dit plus haut, le serveur est plus axés PvP, donc par logique le stuff prédominants dans le serveur est le stuff PvP. Donc je vais vous énumérer la liste non exhaustive du stuff disponible avec les prix : Saison 5 : Stuff de déppart. Saison 6 : Achetable en point d'honneur. Saison 7 : Achetable en points d'arène et points d'honneur. Saison 8 : Achetable en points d’arène et côte d’arène et en Monnaie Morpheus Les prix seront peut-être exorbitants mais les moyens de gagné des points sont aussi diversifié et nombreux. Quêtes journalière, arène customisé, event quotidien et aléatoire. Une zone FFA sera aménager avec un système de jeu un peu différent. Vous pourrez venir voir ça pendant la Béta. Il y aura aussi un système de guerre de guilde avec un système de conquéte de territoire et de fief. Mais pour le moment c'est encore sur papier et la réalisation sera peut être différente. MORPHEUS - PVE : Le serveur possède sa propre histoire, qui vous sera raconté dans une suite de quête qui commence directement au commencement du jeu. Et qui vous débloquera plusieurs fonctionnalité pour le joueurs. Certains quêtes seront complètement scripté, pour vous offrir une vrai expérience vidéo ludique presque cinématographique à la Hideo Kujima ( le gars qui se la pète). Il y aura aussi une instance customisé intégré à l'histoire général qui vous permettra d'avoir certains bijoux, hors-set et montures uniques. D'autres quêtes seront scripté mais pour raconté une histoire différente et hors de la suite de quête principale, histoire de changer d'air. A part tout ça, dans l'auberge de la Capital, il y aura un visiteur étranger quotidiennement différent pour donner chaque jours une nouvelle quête. CE QUI EST FAIT : Même si cela ne fait pas si longtemps qu'on a commencé à travailler, notre sérieux et notre volonté nous ont permis de pas mal avancé déjà : Zone shop/Capital BlizzLike, vivante et animé 100 % Première suite de quête scripté 100 % Suite de quête principale 80 % Quêtes additionnels 60 % Guildes vs Guildes 80 % Template du Site Web 100 % Codage du Site Web 45 % Forum 100 % EQUIPE : Dracx : Administrateur générale. Riscoss : Administrateur communautaire. NzOte : Graphiste. Vods : Sécurité, gestion du dédié, LUA, SQL. Fyshi: Développeur Web, Webmaster NOUS CONTACTER : Pour le moment, le site web n'est pas encore mis enligne alors le seul moyen de nous contacter et de nous rejoindre sur notre Discord, vous pouvez nous rejoindre ici Site Web Forum Discord
  28. 1 point
    Hello ! Tout d'abord, site très propre et soigné : j'apprécie. Cependant quelque chose me dérange dans la présentation du service d'hébergement web. En soi vous avez mis "Votre site internet professionnel" pour votre service d'hébergement web, ce qui peut (beaucoup) induire en erreur .. On a l'impression que vous proposez un service de création de site internet professionnel "A partir de 10€/an" Sinon, rien à dire c'est bien, fait avec bootstrap et propre comme il faut
  29. 1 point
    Les deux villes sont littéralement à 10km l'une de l'autre, c'est un peu chipoter En tout cas le site est propre, pas de fautes, mise en page nickel, je passerai peut-être vous voir dans pas longtemps ! Bon courage :fleur: Edit: autant pour moi, "professionnel" prend deux n Je suis d'accord mais la fiche de l'entreprise doit être à jour. Espérons qu'il ne finisse pas comme certains hébergeurs dont je ne citerai aucunement le nom .
  30. 1 point
    Bonzoooooir ! Je viens aujourd'hui vous présentez un site que j'ai trouvé sur Metin2CMS -> Source. Je l'ai traduis moi même à 100% (Même si c'était pas très très compliqué à vrai dire... *sifflote*) . Il est semblable aux autres CMS basiques si ce n'est que je trouve le design vraiment joli ! Un aperçu : Option diverses : Le site est assez complet en soi, je n'ai pas tout testé. Il manque juste l'ItemShop. Contenu Masqué J'ai modif le logo par contre, mais j'ai le logo de base en PSD : Contenu Masqué Vérifiez quand même si il y'a des fautes niveau orthographes, j'ai parfois du mal.. Mdr
  31. 1 point
    Bonjour, Je vient de créer cette quete, elle permet d'acheter un cheval de combat. Voici le code : ---------------------------------- -- Achat cheval level 11 -- By Dj o0O Loic O0o ---------------------------------- quest horse_shop_11 begin state start begin when 20349.chat."Acheter un cheval de combat" begin say_title("Palefrenier:") say("Bonjour, ici vous pouvez acheter un cheval") say("de combat, mais malheuresement je ne suis pas") say("très riche, donc je vait vous faire une liste") say("de se qu'il me faut.") say("") say_title("La liste :") say_reward("- 5 000 000 Yangs.") say_reward("- 10 Médailles équestre") say_reward("- Dessin de cheval") local b=select("Acheter", "Ne pas acheter") if 1==b then if pc.get_level() < 25 then say_title("Palfrenier :") say("Désolé, mais il faut être level 25") say("minimum pour acheter un cheval de combat.") elseif pc.get_gold()>=5000000 then if pc.countitem("50050")>=10 then pc.changemoney(-5000000) pc.removeitem("50050", 10) pc.removeitem("50051", 1) horse.unride() repeat horse . advance () until horse . get_level () >= 11 horse.ride() pc.give_item2("50053", 1) say_title("Palefrenier:") say("Voilà votre cheval est niveau 11.") say("Faites-en bonne usage.") say_reward("Mais faite attention ! Plus le cheval évolut") say_reward("plus il sera difficile à nourrire, le cheval") say_reward("de combat mange des Carottes.") else local medaille_a_donner= 20 - pc.countitem("50050") say_title("Palefrenier:") say("Espèce d'escroc ! Ta voulut m'arnaquer tu") say("n'avez pas tout les matériaux pour acheter") say("le cheval de combat.") end else local manque_argent = 5000000 - pc.get_gold() say_title("Palefrenier:") say("Vous n'avez pas assez d'argent pour") say("avoir le cheval de combat.") say_reward(string . format ( "Nombre de yangs manquant : %s Yangs." , manque_argent ) ) say("") end elseif 2==b then say_title(string . format ("%s : ",pc.name)) say("Votre offre est trop cher !") say("Vous pouvez vous le gardez votre cheval.") end end end end Si vous ne savez pas implanter une quête : suivez ce tutoriel : ici
Ce classement est défini par rapport à Paris/GMT+01:00
Metin2 Land