Oldarorn

Members
  • Content Count

    111
  • Joined

  • Last visited

Community Reputation

134 Excellent

6 Followers

About Oldarorn

  • Rank
    MC.net Guy
  • Birthday 08/04/1993

Personal Information

  • Specialty
    DBC Editing
    Serverside
    Interface
    Lore/Quests

Recent Profile Visitors

13,354 profile views
  1. Yup, I didn't have to modify the model. I just had to launch Noggit, do some edits with 0 speed, save all tiles and everything was good !
  2. Fixed ! I've just had to launch Noggit and resave my ADTs and it's working
  3. Not sure about that but I think this tutorial could help you :
  4. I want to Remove GlueXML Check from WoW.exe  1.123   BUT cant do this any more can you help me! I read some tutorials, but I didn't understand how to operate them.

    WoW.exe

  5. Coucou toi ! Aujourd'hui on va apprendre à utiliser Dress NPC by Rochet2 pour créer des PNJs qui claquent la classe en jeu ! Tout d'abord, p'tite musique pour se mettre dans le mood : Rainymood, le site qui fait pluie pluie .: Sommaire :. Introduction Outils requis Créer le display du PNJ Créer la requête SQL du PNJ Profits $$ .: D'abord on l'introduit... :. Tout d'abord, il est nécessaire pour vous de comprendre une chose : Je ne vous expliquerais pas comment l'installer. C'est un .diff à appliquer dans vos sources, si vous lisez deux lignes d'anglais vous saurez le faire, dans ce tuto vous allez apprendre à utiliser Dress NPC. Alors, ce truc c'est quoi ? En gros c'est un créateur de DisplayID pour PNJ, un créateur d'apparence si vous voulez. Alors pourquoi l'utiliser plutôt que de faire le truc tradi du genre blinder une DBC ou deux, créer un BLP et créer un patch ? Bah tout simplement parce que ça ne nécessite aucune de ces étapes-ci. Vous commencez à comprendre ? Des PNJs custom sans créer de MPQ, c'est une révolution. C'est bon, t'as compris l'idée ? Bravo, à ce niveau Polytech t'ouvre ses portes (mais juste ses portes d'entrées ou de conciergerie, pas de salle de classe) .: On rince les outils :. Petite liste d'outils utiles (nécessaires même !) : Wow Model Viewer Un logiciel de gestion de DB, normalement si vous avez un peu suivi après l'installation du script de Dress NPC vous avez eu un script SQL pour créer une table dans votre World, on va notamment travailler dessus. Tout simplement, un client WoW. .: QUOI SA GUEULE ? ♫ :. Tout d'abord on va commencer avec WoW Model Viewer, pour les habitués vous savez en quoi il consiste, on va pas s'éterniser dessus, vous le lancez et vous allez dans le dossier character à gauche et vous choisissez la race que vous voulez exploiter :v ! Aujourd'hui moi j'ai choisi un humain male. J'en profite pour dire que je vais habiller mon humain uniquement avec des fringues from TLK, parce que... Bah parce que. Après la séance d'habillage, voici mon cobaye (oui j'utilise les models HD, oui les humains sont en release, non j'donne pas de lien, débrouillez vous) : Vous l'aurez compris, grâce aux caractéristiques entrées à droite, on va se débrouiller pour que mon PNJ ressemble à ça en jeu. C'est là qu'on passe au remplissage DB. .: Je code avec le... ♫ :. Ici, deux tables seront utilisées : creature_template_outfits (il s'agit de celle ajoutée par le patch de Rochet) creature_template (créer le pnj, on va passer très vite dessus je vous ferais pas une création à 100% je vous dirai juste ce qu'il faut mettre) Tout d'abord, creature_template_outfits. Vous le remarquerez, Rochet2 a eu l'extrême délicatesse de laisser une ligne exemple. On décortique : Maintenant on entre dans le vif du sujet, les fameuses caractéristiques utilisées sur WoW Model Viewer. : entry : c'est évident, c'est l'ID que vous utiliserez pour votre DisplayID, ici j'utiliserai 70177. race : c'est clair aussi, l'ID de la race du futur pnj, ici vu que c'est un humain on met 1, si vous voulez la liste des IDs vous l'aurez ChrRaces => ATTENTION A BIEN PRENDRE L'ID ET PAS LA VALUE class : n'ayant pas trop trop compris l'intérêt de cette colonne, on met 1. gender : le sexe du pnj, 0 si c'est un monsieur, 1 si c'est une madame. Et voici l'habillage : skin : la couleur de peau, dans mon exemple : 4 face : le visage (face type), dans mon exemple : 2 hair : la coiffure, par défaut comme dans WMW la coiffure et la couleur des cheveux sont inversées, dans cette table le hair style passe avant le hair color : 1 haircolor : pas besoin de faire un dessin, ici 0 facialhair : la barbe/piercings... ici : 7 Avant de nous lancer, on va juste se mettre d'accords sur un point, si vous utilisez un itemID (le premier nombre entre crochets) celui-ci doit être affiché en positif dans la table, en revanche si vous utilisez le DisplayID (le second nombre) il devra être précédé d'un -. head : la tête, dans mon exemple : -47051 (DisplayID) shoulders : 0 il n'en porte pas. body : 6833 (ItemID, vous comprenez maintenant je pense) chest : 1486 waist : -16782 legs : 7519 feet : 7522 wrists : 0 hands : -10508 back : 0 tabard : 0 A priori tout est bon, on enregistre. Maintenant dans creature_template je vous laisse créer votre PNJ, la seule chose à faire concernant le displayID est d'écrire dans la case modelid1 ou modelid2... c'est -70177. Pourquoi le - ? Afin que le serveur fasse la distinction entre la DB et le client qui je vous le rappelle n'a subi aucune modification au cours de la création de ce DisplayID. .: *Musique badass de Man at arms* :. Et voici mon PNJ en jeu : Aucun défaut, pas de modif client, vous pouvez vous lâcher. N'hésitez pas si ça vous amuse de montrer ce que vous avez fait en jeu, ça peut inspirer des gens qui passeront après vous. Ce tutoriel est terminé, si vous avez des questions n'hésitez pas, si vous avez besoin de support vous savez où est la section adaptée.
  6. Having some fun, Legion's Stormwind is coming on my serv', fully fonctionnal ! (No Futa work was required to do the alphamaps)
  7. Fixed : the mmaps weren't the same... u_u
  8. Hello, Yeah, you'll say "extract maps, extract vmaps..." I already did it, let me explain : I have two maps, one is a "dungeon" map and the other is the "public" map, they are exactly the same maps, same ADTs, same WDT, same maps, same vmaps... But, on the public maps everything is okay, I don't have any problem but on the instanced one, a npc start a waypoint path after giving a quest and he pass through the floor. Only on the instanced one, everything is okay on the public one. Have you any idea about this issue ? I don't really know what to do actually
  9. Bonjour à tous, aujourd'hui on va voir comment créer un métier de récolte type minage ou herboristerie, ça va être long et tendu mais la gloire et le prestige sont au bout du chemin ! Sommaire Outils requis Édit core (C++) Édit DBC Un peu de SQL Outil requis - My DbcEditor ET Spell Editor (pourquoi les deux ? Vous verrez) - De quoi éditer les sources du core (Visual, Notepad++...) => Nécessite un core compilable et non un REPACK !!! - MPQ Editor - Beaucoup, beaucoup de patience. Allez on est partis ! Chirurgie corifique Sans doute la partie la plus CHIANTE du tuto car nécessite une volée de modifications. Tout d'abord on commence avec ScriptedGossip.h Il faut trouver la ligne TRADESKILL_INSCRIPTION = 15, supprimer la virgule en fin de ligne, passer à la ligne suivante puis ajouter : TRADESKILL_BUCHERON = 16, Dans mon cas c'est un métier de bûcheron, si vous voulez mettre autre chose vous êtes libres de faire ce que vous voulez ! On enregistre et on ferme, on a terminé avec ce .h. Passons ensuite à ItemPrototype.h On cherche la ligne ITEM_SUBCLASS_JEWELCRAFTING_RECIPE = 10, et on ajoute ensuite ITEM_SUBCLASS_BUCHERON_RECIPE = 11 On pense aussi à faire un +1 sur la ligne suivante #define MAX_ITEM_SUBCLASS_RECIPE En gros si c'est à 10 on met 11 etc... Terminé pour ItemPrototype, on attaque le final boss des .h j'ai nommé SharedDefine.h C'est le pire des fichiers, celui qui m'a demandé le plus de modifications avec mon équipe, et à chaque modif qu'on faisait on pouvait être sûrs d'en oublier une ensuite alors soyez vraiment attentifs, plus que jamais. On commence par trouver ça : QUEST_SORT_LOVE_IS_IN_THE_AIR = 376, s'il n'y a pas de virgule en fin de ligne on l'ajoute puis on saute une ligne pour ajouter : QUEST_SORT_BUCHERON = 377, Ensuite on cherche SKILL_PET_EXOTIC_SPIRIT_BEAST = 788, et on ajoute à la suite SKILL_BUCHERON = 800, ET SURTOUT ! SURTOUT ! On est pas con comme moi qui a perdu deux jours avec ça, on édite bien : #define MAX_SKILL_TYPE 789 en #define MAX_SKILL_TYPE 801 Ensuite (après c'est fini) on cherche LOCKTYPE_OPEN_FROM_VEHICLE = 21, puis on ajoute à la suite LOCKTYPE_BUCHERON = 30 Pourquoi un locktype ? Parce qu'en fait le minérai/arbre/autre dépend d'un locktype basé sur votre skill. En gros le skill est une clé et votre item à récolter un coffre, seulement si vous n'avez pas bien paramétré ça, ça ne marchera jamais pour récolter... (quand je vous dis que j'y ai passé un temps fou sur ce métier). Pour fini on cherche case LOCKTYPE_INSCRIPTION: return SKILL_INSCRIPTION; et on ajoute en dessous : case LOCKTYPE_BUCHERON: return SKILL_BUCHERON; Presque terminé ! J'avais dit que SharedDefine.h est le dernier fichier à éditer mais c'est faux, tout n'est que mensonge, allez hop, on ouvre Player.cpp On cherche : { case SKILL_HERBALISM: case SKILL_LOCKPICKING: case SKILL_JEWELCRAFTING: case SKILL_INSCRIPTION: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); case SKILL_SKINNING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS)), gathering_skill_gain); case SKILL_MINING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS)), gathering_skill_gain); } (ouais c'est gros je sais) qu'on remplace TOTALEMENT par : { case SKILL_HERBALISM: case SKILL_LOCKPICKING: case SKILL_JEWELCRAFTING: case SKILL_INSCRIPTION: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator, gathering_skill_gain); case SKILL_SKINNING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator) >> (SkillValue / sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS)), gathering_skill_gain); case SKILL_MINING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator) >> (SkillValue / sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS)), gathering_skill_gain); case SKILL_BUCHERON: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel + 100, RedLevel + 50, RedLevel + 25)*Multiplicator, gathering_skill_gain); } Et là, on a terminé avec le C++, sisi pour de vrai. Chirurgie DBCifique Une autre partie peu amusante seulement j'ai proposé d'utiliser Spell Editor pour des raisons évidentes de FAINÉANTISE. Cependant, on va utiliser MyDBCEDitor pour les premières DBCs basiques, en gros on aura besoin de Spell Editor que pour... Bah pour Spell.dbc en fait, dingue non ? On commence facilement avec SkillLine.dbc Moi je suis un faignant naturel, pour évoluer dans mon habitat je prends une ligne et je la duplique pour modifier le duplicata. Exemple : On enregistre et on ferme puis on passe à SkillRaceClassInfo.dbc qui n'est pas plus compliquée que le reste mais je vais prendre le temps de vous détailler un peu les différentes colonnes qui vont nous intéresser cette fois. 1 - ID, unique. 2 - ID de la compétence (ici 800) 3 - Bitmask des races autorisées. 2047 pour toutes. 4 - Bitmask des classes autorisées. 1535 pour toutes. 5 - Flags 6 - Niveau minimum pour cette compétence. Donc, si on reprend le minage : Incroyable hein ? Ensuite d'autres petites DBC trop choupi pour avoir un métier PAR-FAIT. Lock.dbc Ici c'est con, on ajoute une ligne et on écrit ça : Terminé. On peut passer à LockType.dbc On prends une ligne et on en change un peu le contenu, c'est vraiment de la touchette à ce moment du tutorial, vous pouvez limite mettre vos enfants, petits frères/soeurs sur le travail en allant déguster une merveilleuse Sangria sous ce beau soleil d'été. Ce qu'il fait avec ces DBCs est incroyable, les moddeurs le détestent, suivez en 10 étapes comment faire maigrir votre Ogre... Pardon. On attaque TotemCategory.dbc. En gros cette DBC nous permet de donner un nom à l'outil qu'on va utiliser pour récolter (pioche, pelle, godet, moissonneuse batteuse...) On copie, on duplique, on colle, je devrais en faire une chanson... En gros quand vous allez miner ça vous dira "requiert Hache de bûcheron" vous voyez le délire ? Par contre chaque item que vous voudrez utiliser pour récolter devra hériter de cet ID de totem (c'est du SQL j'vous montre plus tard) On va passer à Spell.dbc. Cependant, je ne fournirai pas de tuto sur la création d'une recette pour le métier ici parce que je suis trop méchant. J'ai posté un tutorial sur comment créer une recette avec world Editor, si cela ne vous suffit pas il suffit de faire comme on fait d'habitude, on prend une ligne, on duplique, on édite. C'est chouette non ? Cependant, en bonus je vous donnerai une explication de la DBC à retoucher pour que vos recettes fonctionnent, j'suis qu'une moitié de méchant du coup. Et cette fois, on sort le Spell Editor, la grosse Bertha comme on dit dans l'métier. L'intérêt de ce soft c'est qu'il va nous afficher tout le contenu dans des cases claires, ça veut dire qu'on aura pas de temps à perdre sur les 100000000000 colonnes de Spell.dbc, on édite le strict minimum et let's go McFly, to the future ! Mais si on fait pas de recette, à quoi va servir Spell.DBC ? C'est une bonne question Raymond, et bien simplement à créer les grades du métier Sont y pas beaux ? La question c'est pourquoi on a deux fois chaque spell, exemple, pourquoi on a le 80009 et le 80010 avec la même icone ? (oui ça a son importance dans mon classement) => en fait c'est simple, l'un des spells est celui qui vous permet de couper l'arbre (le 80009) et l'autre est celui qui sera affiché dans la fenêtre du maitre de profession (80010), c'est aussi celui-ci qui servira en condition "requiert machin pour apprendre truc" En gros chez nous ça donne => minage/apprenti mineur. Donc on va aller prendre les deux spells et modifier EXACTEMENT chaque zone rouge que je vous montrerai dans les screens qui vont suivre. N'oubliez pas de bien paramétrer Spell Editor si ce n'est pas déjà fait, ça mange pas de pain. Le fait de créer un nouveau spell va vous demander si vous souhaitez copier les données d'un autre vers une nouvelle ligne, bonjour le gain de temps ! On prends donc le premier spell apprenti mineur (2581) qui comme vous le verrez nous enseigne le spell 2575 (minage (apprenti)), pour chaque grade vous devrez refaire le même process d'utiliser deux spells à chaque fois, voici les modifications à apporter d'abord sur le 2581 puis sur le 2575. D'abord on crée un nouveau spell en cliquant sur New Spell dans la barre bleue en haut à droite. Le nouveau spell est crée c'est parti. Le seul truc à déplorer c'est que Spell Editor ait quelques difficultés à lire certaines DBCs FR c'est pour cela que je vous invite à ne pas toucher aux DBCs présentes dans le dossier du soft sauf Spell.dbc si vous avez déjà des spells custom et que vous voulez pas vous prendre la tête Pour le reste, je pense notamment à TotemCategory.dbc veillez à ajouter sur la DBC du soft la même ligne que celle de votre DBC FR et ça passera crème. Et l’icône si vous voulez la changer le menu semble être assez évident hein ? Attardons nous d'abord un peu sur tout cela. Screen 1 : Trigger Spell, le spell qui va être enseigné au travers de celui-ci, en gros le 80000 enseignera le 80001... Screen 2 : Quel skill ? Dans ce que nous avons fait plus haut notre Skill est 800 donc on met 800. Terminé pour ce spell si vous ne touchez pas à l’icône. On clique sur save spell change en haut à droite et on refait un nouveau spell basé cette fois sur le 2575. Je vous repasse la création de spell vous avez compris comment elle marche. Screen 1 : TotemCategory : elle est vide chez moi à cause de la DBC FR, si vous suivez ce que je vous ai dit précédemment vous pourrez choisir votre outil. Screen 2 : Le type de lock, ici 3 on change pour 30 lock.dbc ça vous rappelle quelque chose ? Screen 3 : Encore le skill, on met à 800. A refaire pour tout les grades du métier, apprenti, compagnon, expert, artisan, maitre, grand maitre... Histoire de vous aider un je vous liste les IDs utiles : - Apprenti : 2581/2575 - Compagnon : 2582/2576 - Expert : 3568/3564 - Artisan : 10249/10248 - Maître : 29355/39354 - Grand Maître : 50309/50310 Les modifications seront toujours les mêmes donc vous voila tranquilles ! Dernière DBC à toucher ! ENFIN ! SkillLineAbility.dbc En gros c'est la DBC qui gère les chaines de spell et les recettes. Une chaine de spell c'est quand plusieurs spells se suivent dans une ligne, par exemple compagnon suit apprenti etc et c'est aussi cette DBC qui définit quand une recette passe de vert à gris et seulement ces deux là ! 1 - ID, unique. 2 - Correspond à la compétence (SkillLine.dbc) 3 - Correspond au sort concerné (Spell.dbc). 4 & 5 - Toujours 0. 6 & 7 - Vide. 8 - Toujours 1. 9 - Sort parent du sort en colonne 2. 10 - 0x0 en général. 0x1 pour apprendre la recette en même temps que la compétence. 11 - Niveau quand la recette devient grise. 12 - niveau quand la recette devient verte. 13 & 14 - Vide. Dans l'exemple des métiers ça va nous donner : 25000,800,80000,0,0,,,1,80002,0x0,0,0,,, 25001,800,80002,0,0,,,1,80004,0x0,0,0,,, 25002,800,80004,0,0,,,1,80006,0x0,0,0,,, Honteusement copié d'un autre tutoriel, l'essentiel c'est que vous compreniez où je veux en venir. A refaire pour chaque grade de profession. Dans le cas d'une recette, on le fait à l'ancienne, on copie une ligne et on l'édite. Et c'est terminé avec les DBCs ! Le SQL, le meilleur pour la fin. En fait en SQL on a presque rien à faire. Sisi j'vous jure. Les restrictions pour apprendre tel ou tel spell, par exemple on peut dire qu'il faut que le spell 80000 soit requis pour apprendre le 80001 et bien on peut, il suffit (avec TrinityCore) d'ouvrir la table dans World required_spell et on ajoute ce qu'il faut dans les deux colonnes, à faire pour chaque grade, bien entendu. Mais le maitre alors ? Voici un template complet pour votre maitre. SET @ENTRY := VOTRE_ID; SET @APPRENTI := SPELL_APPRENTI; SET @COMPAGNON := SPELL_COMPAGNON; SET @EXPERT := SPELL_EXPERT; SET @ARTISAN := SPELL_ARTISAN; SET @MAITRE := SPELL_MAITRE; SET @GRAND_MAITRE := SPELL_GRAND_MAITRE; INSERT INTO `npc_trainer` (entry, spell, spellcost, reqskill, reqskillvalue, reqlevel) VALUES (@ENTRY, @APPRENTI, 100, 0, 0, 5), (@ENTRY, @COMPAGNON, 475, 800, 50, 10), (@ENTRY, @EXPERT, 4750, 800, 125, 10), (@ENTRY, @ARTISAN, 47500, 800, 200, 25), (@ENTRY, @MAITRE, 100000, 800, 275, 0), (@ENTRY, @GRAND_MAITRE, 350000, 800, 350, 0); Tout est écrit, les prix, les niveaux requis, le niveau de compétence dans tel ou tel skill, tout est prêt, vous n'avez que les SET à éditer. Pour ce qui est des GobJects je ne ferais pas d'annexe sur ce tuto ici étant donné que tout le monde ne va pas faire le même métier et qu'ajouter en plus une gestion de GameObjectDisplayInfo.dbc ferait de ce tuto quelque chose d'encore plus long. Pareil, pour créer un arbre ou autre, n'hésitez pas à reprendre le script SQL d'un filon et de l'éditer comme il faut. Tutoriel terminé, ayez du fun et n'hésitez pas à demander si vous êtes perdus !
  10. Same, send me what you need to translate I'll do the french part
  11. You should pick some code from here, it may help you https://bitbucket.org/LeorFinacre/world-editor I'm not a developer but if just a repo can help you...
  12. As I said in PM today (I don't receive notification when someone post on my tutorials >< ) it's a different method ! Never tried
  13. You have to open your .tga file with Photoshop and then renamed it with Photoshop
  14. Hi guys (and girls) I wanted to use my free time to write new tutorials, here is what I'm planning, if you have some suggestions, feel free to answer after me I'm not a pro, don't ask for hard tutorials ! Don't ask for mapping tutorials too, I'm the worst mapper in the known world ! How to create new Titles (EN/FR) How to create new Extra faces (EN(?)/FR) How to create a custom job (EN/FR) It's a short list yeah, but it's kinda cool imo ^^
  15. You know, if Wingausaurus is able to update a listile, you can do the same ! I mean, MMO-Champion is releasing a lot of images and those imgs contain the EXACT name of what is showed on it, it means you can open a .txt, and add you path by yourself instead of waiting an other guy does it for you.