[Débutant] Pnj Régénération
Pnj Régénération

Voici un petit script tout simple et détaillé pour une meilleur compréhension pour les débutants, il vous "régéne" votre vie ou votre mana selon votre classe :

/*
 * Copyright © 2013-2014 Molios
 */

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

class pnj_regen : public CreatureScript
{
    public:

        pnj_regen()
            : CreatureScript("pnj_regen")
        {
        }

        //MENU GENE
        bool OnGossipHello(Player* pPlayer, Creature* pCreature)
        {
          pPlayer->ADD_GOSSIP_ITEM(4, "Vie au Maximum->", GOSSIP_SENDER_MAIN, 1); // Option pour mettre votre vie au maximum
          if (pPlayer->getClass() == CLASS_HUNTER) // Option visible simplement pour les chasseurs
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2); // Option pour mettre votre mana au maximum
          }
          if (pPlayer->getClass() == CLASS_DRUID) // Option visible simplement pour les druides
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }
          if (pPlayer->getClass() == CLASS_MAGE)
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }
          if (pPlayer->getClass() == CLASS_PALADIN)
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }
          if (pPlayer->getClass() == CLASS_SHAMAN)
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }
          if (pPlayer->getClass() == CLASS_WARLOCK)
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }
          if (pPlayer->getClass() == CLASS_PRIEST)
          {
            pPlayer->ADD_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
          }	  
          pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Quitter", GOSSIP_SENDER_MAIN, 3);
          pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
          return true;
        }

        bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
        {
          switch (uiAction)
          {
            case 1: // VIE
            {
              pPlayer->SetHealth(pPlayer->GetMaxHealth());
              pCreature->MonsterWhisper("Votre Vie est au Maximum.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 2: // MANA
            {
              pPlayer->SetPower(POWER_MANA, pPlayer->GetMaxPower(POWER_MANA));
              pCreature->MonsterWhisper("Votre Mana est au Maximum.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
            case 3: //Quitter
            {
              pCreature->MonsterWhisper("Aurevoir.", pPlayer->GetGUID());
              pPlayer->CLOSE_GOSSIP_MENU();
              break;
            }
          }
          return true;
        }
};

void AddSC_pnj_regen()
{
    new pnj_regen();
}
Merci du partage Smile !

J'ai quand même une question ^^' !

Pourquoi tant de if(pPlayer->getClass() == CLASS_xx) ?
Un simple switch ne serait pas plus "lisible ?"

Exemple:

switch(pPlayer->getClass())
{
	case CLASS_HUNTER:
	case CLASS_DRUID:
	case CLASS_MAGE:
	case CLASS_PALADIN:
	case CLASS_SHAMAN:
	case CLASS_WARLOCK:
	case CLASS_PRIEST:
		pPlayer->ASS_GOSSIP_ITEM(4, "Mana au Maximum->", GOSSIP_SENDER_MAIN, 2);
	break;
}
J'essaye de suivre une "logique" dans tout mes scripts partagés, pour que les débutants s'appuis sur le même principe et la même compréhension. Smile

Retourner en haut WoW-Emu