[SQL 6xx] Dialogues & choix multiples sur un PNJ par Gossip_menu & SmartAI - Version imprimable +- AquaYoup (https://aquayoup.123.fr) +-- Forum : Développement World of Warcraft (https://aquayoup.123.fr/forum-1.html) +--- Forum : Tutoriels (https://aquayoup.123.fr/forum-6.html) +--- Sujet : [SQL 6xx] Dialogues & choix multiples sur un PNJ par Gossip_menu & SmartAI (/thread-34.html) |
Dialogues & choix multiples sur un PNJ par Gossip_menu & SmartAI - Stitch - 29/09/2016 Gossip_menu: dialogue & choix multiples sur un PNJ
Un gossip_menu c'est tout simplement comme montré sur le screen une fenêtre qui s'ouvre et nous propose plusieurs choix . Il peut etre crée sur un PNJ ou un gameobject , pour illustrer ce tuto je prendrais l'exemple d'un PNJ téléporteur que j'ai crée pour Azshara . Pour créer un gossip_menu nous aurons besoin de définir 3 choses : 1) Le npcflag dans créature_template (n’existe pas sur un gameobject et n'est donc pas nécessaire) ainsi que gossip_menu_id (11705 dans l'exemple ci dessous). 2) créer les entrées gossip_menu dans la table gossip_menu_option comme ci dessous : Citation :REPLACE INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES Explications : menu_id : c'est le gossip_menu_id renseigné dans créature_template , id : servira sur SAI-editor a savoir quel choix a fait le joueur option_icon : un petit icone optionnel affiché avant le texte pour le choix proposé . Il peut être au choix : Citation :GOSSIP_ICON_CHAT 0option_text : le texte pour le choix proposé option_id : pour un type de pnj comme un vendeur ou un taxi , personnellement j'utilise toujours zero pour none . npc_option_npcflag : le pnj a un flag gossip_menu , laissez a 1 action_menu_id : une id pour un sub-menu , perso je n'ai jamais eu besoin d'aller jusque la action_poi_id : point of interest affiché sur la minimap box_money : ce que le joueur doit payer ( en piece de cuivre ) 3) Créer le smartai qui va gérer tout sa comme sur le screen qui suit : PS : On ne le vois pas sur ce screen mais les id (0 a 4) défini dans la table gossip_menu_option apparaitront dans EVENT_GOSSIP_SELECT -> gossip_menu_item . Citation :Le script smartai en question : Derniers point , les gossip ne ce ferment généralement pas . Il faut pour chaque choix créer une autre entrée ACTION_CLOSE_GOSSIP pour le fermer . Dans mon script ce n’était pas nécessaire puisque la téléportation du joueur ferme automatiquement la fenêtre . 4) Ajouter une option générique au gossip_menu_option : Il peut être intéressant de rajouter a notre PNJ une option de vendeur , de maître des ventes , banquier ou autre . Pour cela il faudra éditer le `option_id` et le `npc_option_npcflag`du notre gossip_menu_option et le core gérera automatiquement cette option en ouvrant la fenêtre générique en rapport , il ni aura rien d'autre a rajouter . Bien entendu le flag du PNJ doit etre activé . Exemple de l’édition du gossip_menu_option du PNJ Fiona afin de lui rajouter une option de vendeur . Citation :REPLACE INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES L'option_id 3 désigne le type d'option comme vendeur ou maître de profession etc . Le npc_option_npcflag 128 désigne tout simplement le flag ou groupe de flag compatible a cette option comme vendeur ou vendeur+réparateur du pnj . Une ligne gossip_menu_option pour une option . Ci dessous la liste des option générique et des flags correspondant : Citation :option_id & npc_option_npcflag Je terminerais ce tuto par un petit coup de gueule contre certains choix fait par trinity comme l'illustre l'exemple ci dessous :
Sachez que si vous désirez afficher un message avant le choix du menu comme le 'Vers ou désirez vous aller l''ami ?' sur le screen ... sous 6x c'est devenu n'importe quoi , un vrais parcours du combattant et donc je ne l'utilise jamais . Voila pourquoi : - En premier récupérez le contenu de gossip_menu_id dans creature_template , celui ci vous indiquera l'entrée de la table gossip_menu (et non gossip_menu_option ) a regarder . - la table gossip_menu vous indiquera dans text_id l'entrée de la Table: npc_text a regarder . - l'entrée de npc_text enfin vous indiquera par son entrée BroadcastTextID0 la table broadcast_text a éditer contenant le message ... table broadcast_text qui ce trouve sur ... la DB hotfixes ... BRAVO Trinity vous avez fait un superbe boulot , gros GG
RE: Gossip_menu: dialogue & choix multiples sur un PNJ - Stitch - 10/12/2016 Petit complément rajouté au tuto : 4) Ajouter une option générique au gossip_menu_option RE: Gossip_menu: dialogue & choix multiples sur un PNJ - Stitch - 01/08/2018 Mise a jour des npc_option_npcflag RE: Gossip_menu: dialogue & choix multiples sur un PNJ - Noc - 01/08/2018 Merci beaucoup |