Hallo liebe Community, heute zeige ich euch wie ihr einen Buff NPC erstellen könnt.
Schritt 1: Als erstes includiert ihr diese Sachen, dies ist notwendig sonst wird es nicht funktionieren.
C
		
			#include "GossipDef.h"
#include "Player.h"
#include "ScriptedPch.h"
#include "ScriptedGossip.h"
#include "Database/DatabaseEnv.h"
#include "SpellMgr.h"
#include "Common.h"Schritt 2: Nun erstellen wir unseren NPC
Code
		
			bool GossipHello_simple_buff_npc(Player *player, Creature *_Creature)
{
	player->SetTaxiCheater(true);
	player->ADD_GOSSIP_ITEM(5, "Teleports",					 GOSSIP_SENDER_MAIN,  1/* '1' */ ); // Erstellt einen Menu Eintrag welcher der Spieler den NPC sieht wenn er den NPC ansprich
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,       	_Creature->GetGUID());
	return true;	   
}Schritt 3: Was passieren soll, wen man in Anklickt
Code
		
					
			void SendDefaultMenu_simple_buff_npc(Player *player, Creature *_Creature, uint32 action)
	{
   	if(!player->getAttackers().empty()) //Eine Abfrage ob der Spieler in einen Kampf verwickelt ist falls ja schließt der NPC den Dialog und gibt dem Spieler die * Nachricht an
	   {
		   player->CLOSE_GOSSIP_MENU();
		   player->GetSession()->SendNotification("Ihr seid in einen Kampf verwickelt."); // Nachricht = * 
	   }
	   else
	   {
  switch(action) // Falls der jenige nicht in einen Kampf verwickelt ist wird er weitergeleitet
 		{
		  case 1: //Das ist der Fall wenn der Spieler den Menu Punkt 'Teleports' anklickt
			  player->ADD_GOSSIP_ITEM(5, "Ausdauer",                        	GOSSIP_SENDER_MAIN,   2/* '2' */); //Erstellt erneut eine Auswahl bzw einen Menupunkt
			  player->ADD_GOSSIP_ITEM(5, "Rüstung",                         	GOSSIP_SENDER_MAIN,   3); //Erstellt eine 2te Auswahl bzw. Menupunkt
			  player->ADD_GOSSIP_ITEM(0, "Schoenen Tag noch",               	GOSSIP_SENDER_MAIN,   4);
			  player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,                 	_Creature->GetGUID());
		  break;
		  case  2://Ausdauerbuff
		 	player->CLOSE_GOSSIP_MENU(); // '3'
        	_Creature->CastSpell(player, 58453/*4*/, true); 
    	break;
		  case  3://Rüstungsbuff
		 	player->CLOSE_GOSSIP_MENU();
        	_Creature->CastSpell(player, 42995, true); 
    	break;
		  case  4:
			player->CLOSE_GOSSIP_MENU(); // Beendet den Dialog
			player->GetSession()->SendNotification("Schoenen Tag noch."); // Gibt dem Spieler noch eine Abbschlussnachricht
		break;
    	}
}
}Schritt 4: Der Buff NPC selber
Code
		
					
			bool GossipSelect_simple_buff_npc(Player *player, Creature *_Creature, uint32 sender, uint32 action)
{
	if (sender == GOSSIP_SENDER_MAIN)
    	SendDefaultMenu_simple_buff_npc(player, _Creature, action);
	return true;
}
void AddSC_simple_buff_npc()
{
	Script *newscript;
	newscript					=new Script;
	newscript->Name         	="simple_buff_npc";// Definiert den Scriptnamen der später in dem Feld 'Scriptnamen' in dem creature_template bei der Creature angeben werden muss
	newscript->pGossipHello 	=&GossipHello_simple_buff_npc;
	newscript->pGossipSelect	=&GossipSelect_simple_buff_npc;
	newscript->pItemHello   	=NULL;
	newscript->pGOHello     	=NULL;
	newscript->pAreaTrigger 	=NULL;
	newscript->pItemQuestAccept =NULL;
	newscript->pGOQuestAccept   =NULL;
	newscript->pGOChooseReward  =NULL;
	newscript->RegisterSelf();
}An Ende, müsste bei euch alles so aussehen.
C
		
					
			#include "GossipDef.h"
#include "Player.h"
#include "ScriptedPch.h"
#include "ScriptedGossip.h"
#include "Database/DatabaseEnv.h"
#include "SpellMgr.h"
#include "Common.h"
bool GossipHello_simple_buff_npc(Player *player, Creature *_Creature)
{
	player->SetTaxiCheater(true);
	player->ADD_GOSSIP_ITEM(5, "Teleports",					 GOSSIP_SENDER_MAIN,  1/* '1' */ ); // Erstellt einen Menu Eintrag welcher der Spieler den NPC sieht wenn er den NPC ansprich
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,       	_Creature->GetGUID());
	return true;	   
}
void SendDefaultMenu_simple_buff_npc(Player *player, Creature *_Creature, uint32 action)
	{
   	if(!player->getAttackers().empty()) //Eine Abfrage ob der Spieler in einen Kampf verwickelt ist falls ja schließt der NPC den Dialog und gibt dem Spieler die * Nachricht an
	   {
		   player->CLOSE_GOSSIP_MENU();
		   player->GetSession()->SendNotification("Ihr seid in einen Kampf verwickelt."); // Nachricht = * 
	   }
	   else
	   {
  switch(action) // Falls der jenige nicht in einen Kampf verwickelt ist wird er weitergeleitet
 		{
		  case 1: //Das ist der Fall wenn der Spieler den Menu Punkt 'Teleports' anklickt
			  player->ADD_GOSSIP_ITEM(5, "Ausdauer",                        	GOSSIP_SENDER_MAIN,   2/* '2' */); //Erstellt erneut eine Auswahl bzw einen Menupunkt
			  player->ADD_GOSSIP_ITEM(5, "Rüstung",                         	GOSSIP_SENDER_MAIN,   3); //Erstellt eine 2te Auswahl bzw. Menupunkt
			  player->ADD_GOSSIP_ITEM(0, "Schoenen Tag noch",               	GOSSIP_SENDER_MAIN,   4);
			  player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,                 	_Creature->GetGUID());
		  break;
		  case  2://Ausdauerbuff
		 	player->CLOSE_GOSSIP_MENU(); // '3'
        	_Creature->CastSpell(player, 58453/*4*/, true); 
    	break;
		  case  3://Rüstungsbuff
		 	player->CLOSE_GOSSIP_MENU();
        	_Creature->CastSpell(player, 42995, true); 
    	break;
		  case  4:
			player->CLOSE_GOSSIP_MENU(); // Beendet den Dialog
			player->GetSession()->SendNotification("Schoenen Tag noch."); // Gibt dem Spieler noch eine Abbschlussnachricht
		break;
    	}
	  }
}
bool GossipSelect_simple_buff_npc(Player *player, Creature *_Creature, uint32 sender, uint32 action)
{
	// Der Buff NPC selber
	if (sender == GOSSIP_SENDER_MAIN)
    	SendDefaultMenu_simple_buff_npc(player, _Creature, action);
	return true;
}
void AddSC_simple_buff_npc()
{
	Script *newscript;
	newscript					=new Script;
	newscript->Name         	="simple_buff_npc";// Definiert den Scriptnamen der später in dem Feld 'Scriptnamen' in dem creature_template bei der Creature angeben werden muss
	newscript->pGossipHello 	=&GossipHello_simple_buff_npc;
	newscript->pGossipSelect	=&GossipSelect_simple_buff_npc;
	newscript->pItemHello   	=NULL;
	newscript->pGOHello     	=NULL;
	newscript->pAreaTrigger 	=NULL;
	newscript->pItemQuestAccept =NULL;
	newscript->pGOQuestAccept   =NULL;
	newscript->pGOChooseReward  =NULL;
	newscript->RegisterSelf();
}Dies ist ein Tutorial für Anfänger, ihr könnt natürlich auch den NPC erweitern.
 
		 
		
		
	 
			
									
		
 
 