Pnj Sacs
Pnj vendeur de sacs gratuit

Voici un petit script légèrement développé d'un pnj qui vous donne des sacs gratuit en fonction de se que vous avez, détaillé pour une meilleur compréhension pour les débutants, et ceux qui évoluent :

/*
 * Copyright © 2013-2014 Molios
 */

#include "ScriptPCH.h"
#include <cstring>

class pnj_sac : public CreatureScript
{
    public:

        pnj_sac()
            : CreatureScript("pnj_sac")
        {
        }

        //MENU GENERAL
        bool OnGossipHello(Player* pPlayer, Creature* pCreature)
        {
          if (pPlayer->GetItemCount(38082) == 4) // Si le joueur à 4 sacs gratuit déjà en sa possession, le menu s'affiche pas
          {
          }
          else // Sinon le menu suivant s'affiche
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Sacs Gratuit->", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); // Sacs Gratuit
          }
          pPlayer->ADD_GOSSIP_ITEM(4, "Sacs de metier->", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); // Menu des sacs métiers
          pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Quitter", GOSSIP_SENDER_MAIN, 12); // Fermer le menu
          pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
          return true;
        }

        bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
        {
          pPlayer->PlayerTalkClass->ClearMenus();
          if (uiAction == GOSSIP_ACTION_INFO_DEF + 1) // Menu "Sacs Gratuit"
          {
            if (pPlayer->GetItemCount(38082) == 0) // Si le joueur à 0 sac gratuit, il pourra se "add" 4 sacs en un seul clique
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "4 Sacs Gratuit ->", GOSSIP_SENDER_MAIN, 1);
            }
            if (pPlayer->GetItemCount(38082) == 1) // Si le joueur à 1 sac gratuit, il pourra se "add" 3 sacs en un seul clique
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "3 Sacs Gratuit ->", GOSSIP_SENDER_MAIN, 2);
            }
            if (pPlayer->GetItemCount(38082) == 2)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "2 Sacs Gratuit ->", GOSSIP_SENDER_MAIN, 3);
            }
            if (pPlayer->GetItemCount(38082) == 3)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "1 Sacs Gratuit ->", GOSSIP_SENDER_MAIN, 4);
            }
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Quitter", GOSSIP_SENDER_MAIN, 12);
            pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
            return true;
          }

          pPlayer->PlayerTalkClass->ClearMenus();
          if (uiAction == GOSSIP_ACTION_INFO_DEF + 2) // Menu "Sacs de metier"
          {
            if (pPlayer->GetItemCount(67394) == 0) // Si le joueur à 0 sac de calligraphie, il pourra voir le menu et se add le sac en un seul clique
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs de calligraphie ->", GOSSIP_SENDER_MAIN, 5);
            }
            if (pPlayer->GetItemCount(30747) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs de gemmes ->", GOSSIP_SENDER_MAIN, 6);
            }
            if (pPlayer->GetItemCount(30746) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs de mineur ->", GOSSIP_SENDER_MAIN, 7);
            }
            if (pPlayer->GetItemCount(67395) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs de travailleur du cuir ->", GOSSIP_SENDER_MAIN, 8);
            }
            if (pPlayer->GetItemCount(30748) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs d'enchanteur ->", GOSSIP_SENDER_MAIN, 9);
            }
            if (pPlayer->GetItemCount(67393) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs d'herbes ->", GOSSIP_SENDER_MAIN, 10);
            }
            if (pPlayer->GetItemCount(30745) == 0)
            {
              pPlayer->ADD_GOSSIP_ITEM(4, "Sacs d'ingenieur ->", GOSSIP_SENDER_MAIN, 11);
            }
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Quitter", GOSSIP_SENDER_MAIN, 12);
            pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
            return true;
          }

          switch (uiAction)
          {
            case 1: // 4 SACS GRATUIT
            {
              pPlayer->AddItem(38082, 4); // (Id de l'item, Nombre d'item)
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 2: // 3 SACS GRATUIT
            {
              pPlayer->AddItem(38082, 3);
              pCreature->MonsterWhisper("Vous avez recu deux sacs.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 3: // 2 SACS GRATUIT
            {
              pPlayer->AddItem(38082, 2);
              pCreature->MonsterWhisper("Vous avez recu trois sacs.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 4: // 1 SAC GRATUIT
            {
              pPlayer->AddItem(38082, 1);
              pCreature->MonsterWhisper("Vous avez recu quatre sacs.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 5: // SAC METIER calligraphe
            {
              pPlayer->AddItem(67394, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 6: // SAC METIER gemme
            {
              pPlayer->AddItem(30747, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 7: // SAC METIER mineur
            {
              pPlayer->AddItem(30746, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 8: // SAC METIER cuir
            {
              pPlayer->AddItem(67395, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 9: // SAC METIER enchant
            {
              pPlayer->AddItem(30748, 1);
              pCreature->MonsterWhisper("Vous avez recusun sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 10: // SAC METIER herbe
            {
              pPlayer->AddItem(67393, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 11: // SAC METIER ingenieur
            {
              pPlayer->AddItem(30745, 1);
              pCreature->MonsterWhisper("Vous avez recu un sac.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 12: //Quitter
            {
              pCreature->MonsterWhisper("Aurevoir.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
          }
          return true;
        }
};

void AddSC_pnj_sac()
{
    new pnj_sac();
}
Merci!

Retourner en haut WoW-Emu