Beastmaster script help

Hallow, I just found old beast master script in my PC, so I thought that I should update it. I haven’t updated a script to the latest Trinity Core, but this one works well besides the script registering part. However I yet couldn’t figure out how to make it work, I’ve read here and there, it all seems well declared, but yet the script doesn’t wants to compile. To not be thinking it’s just asking for help, of course I’ll leave it here so everybody could get a piece of it. It’s quite nice script to be honest /emoticons/default_smile.png.

The compile error:

3>..\..\..\..\src\server\scripts\Custom\npc_beastmaster.cpp(266) : error C2061: syntax error : identifier 'npc_beastmaster' 

The code:

[CODE]#include “ScriptPch.h”

#include “ScriptMgr.h”

#include

#include

#include “Pet.h”

#include “Formulas.h”

#define GOSSIP_ITEM_STABLE “Stable”

#define GOSSIP_ITEM_NEWPET “New Pet”

#define GOSSIP_ITEM_BOAR “Boar”

#define GOSSIP_ITEM_SERPENT “Serpent”

#define GOSSIP_ITEM_SCRAB “Scrab”

#define GOSSIP_ITEM_LION “Lion”

#define GOSSIP_ITEM_WOLF “Wolf”

#define GOSSIP_ITEM_RAVAGER “Ravenger”

#define GOSSIP_ITEM_UNTRAINEPET “Restart Pet”

void CreatePet(Player *player, Creature * m_creature, uint32 entry) {

if(player->getClass() != CLASS_HUNTER) {

	m_creature->MonsterWhisper("You are not hunter! Your order have been rejected.", player->GetGUID());

	player->PlayerTalkClass->CloseGossip();

	return;

}


if(player->GetPet()) {

m_creature->MonsterWhisper("First you must drop your pet!", player->GetGUID());

player->PlayerTalkClass->CloseGossip();

return;

}


Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);

if(!creatureTarget) return;


Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);

if(!pet) return;


// kill original creature

creatureTarget->setDeathState(JUST_DIED);

creatureTarget->RemoveCorpse();

creatureTarget->SetHealth(0);                       // just for nice GM-mode view


pet->SetPower(POWER_HAPPINESS, 1048000);


//pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE,0);

//pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32((Trinity::XP::xp_to_level(70))/4));


// prepare visual effect for levelup

pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);

pet->GetMap()->Add((Creature*)pet);

// visual effect for levelup

pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());



/*if(!pet->InitStatsForLevel(player->getLevel()))

	error_log ("Pet Create fail: no init stats for entry %u", entry);*/


pet->UpdateAllStats();


// caster have pet now

player->SetMinion(pet, true);


pet->SavePetToDB(PET_SAVE_AS_CURRENT);

pet->InitTalentForLevel();

player->PetSpellInitialize();


//end

player->PlayerTalkClass->CloseGossip();

m_creature->MonsterWhisper("Pet added. You might want to feed it and name it somehow.", player->GetGUID());

};

bool GossipHello_npc_beastmaster(Player *player, Creature *_Creature)

{

if(player->getClass() != CLASS_HUNTER)

  {

  _Creature->MonsterWhisper("You are not hunter!", player->GetGUID());

	return true;

	}

  player->ADD_GOSSIP_ITEM(4, "Get new pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

  if (player->CanTameExoticPets())

  {

    player->ADD_GOSSIP_ITEM(4, "Get new exotic pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);

  }

  player->ADD_GOSSIP_ITEM(2, "Take me to stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

  player->ADD_GOSSIP_ITEM(6, "Sell me some food", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

return true;

};

                    //player->SEND_VENDORLIST( _Creature->GetGUID() );

bool GossipSelect_npc_beastmaster(Player *player, Creature *_Creature, uint32 sender, uint32 action)

{

switch (action)

{

case GOSSIP_ACTION_INFO_DEF + 100:

player->ADD_GOSSIP_ITEM(4, "Get new pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

  if (player->CanTameExoticPets())

  {

    player->ADD_GOSSIP_ITEM(4, "Get new exotic pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);

  }

  player->ADD_GOSSIP_ITEM(2, "Take me to stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

  player->ADD_GOSSIP_ITEM(6, "Sell me some food", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

  player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 30:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(4, "Next page >>", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 31);

player->ADD_GOSSIP_ITEM(6, "Bat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18);

player->ADD_GOSSIP_ITEM(6, "Bear", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);

player->ADD_GOSSIP_ITEM(6, "Boar", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);

player->ADD_GOSSIP_ITEM(6, "Cat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);

player->ADD_GOSSIP_ITEM(6, "Carrion Bird", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);

player->ADD_GOSSIP_ITEM(6, "Crab", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);

player->ADD_GOSSIP_ITEM(6, "Crocolisk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);

player->ADD_GOSSIP_ITEM(6, "Dragonhawk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);

player->ADD_GOSSIP_ITEM(6, "Gorilla", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);

player->ADD_GOSSIP_ITEM(6, "Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);

player->ADD_GOSSIP_ITEM(6, "Hyena", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);

player->ADD_GOSSIP_ITEM(6, "Moth", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);

player->ADD_GOSSIP_ITEM(6, "Owl", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 31:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(4, "<< Previous page", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

player->ADD_GOSSIP_ITEM(6, "Raptor", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20);

player->ADD_GOSSIP_ITEM(6, "Ravager", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19);

player->ADD_GOSSIP_ITEM(6, "Strider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);

player->ADD_GOSSIP_ITEM(6, "Scorpid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);

player->ADD_GOSSIP_ITEM(6, "Spider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);

player->ADD_GOSSIP_ITEM(6, "Serpent", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);  

player->ADD_GOSSIP_ITEM(6, "Turtle", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);

player->ADD_GOSSIP_ITEM(6, "Wasp", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 50:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(6, "Chimaera", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 51);

player->ADD_GOSSIP_ITEM(6, "Core Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 52);

player->ADD_GOSSIP_ITEM(6, "Devilsaur", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 53);

player->ADD_GOSSIP_ITEM(6, "Rhino", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 54);

player->ADD_GOSSIP_ITEM(6, "Silithid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 55);

player->ADD_GOSSIP_ITEM(6, "Worm", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 56);  

player->ADD_GOSSIP_ITEM(6, "Loque'nahak", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 57);

player->ADD_GOSSIP_ITEM(6, "Skoll", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 58);

player->ADD_GOSSIP_ITEM(6, "Gondria", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 59);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;


case GOSSIP_OPTION_STABLEPET:

    player->GetSession()->SendStablePet(_Creature->GetGUID());

    break; 

case GOSSIP_OPTION_VENDOR:

    player->SEND_VENDORLIST( _Creature->GetGUID());

    break;

case GOSSIP_ACTION_INFO_DEF + 51: //chimera

    CreatePet(player, _Creature, 21879);

    break;

case GOSSIP_ACTION_INFO_DEF + 52: //core hound

    CreatePet(player, _Creature, 21108);

    break;

case GOSSIP_ACTION_INFO_DEF + 53: //Devilsaur

    CreatePet(player, _Creature, 20931);

    break;

case GOSSIP_ACTION_INFO_DEF + 54: //rhino

    CreatePet(player, _Creature, 30445);

    break;

case GOSSIP_ACTION_INFO_DEF + 55: //silithid

    CreatePet(player, _Creature, 5460);

    break;

case GOSSIP_ACTION_INFO_DEF + 56: //Worm

    CreatePet(player, _Creature, 30148);

    break;

case GOSSIP_ACTION_INFO_DEF + 57: //Loque'nahak

    CreatePet(player, _Creature, 32517);

    break;

case GOSSIP_ACTION_INFO_DEF + 58: //Skoll

    CreatePet(player, _Creature, 35189);

    break;

case GOSSIP_ACTION_INFO_DEF + 59: //Gondria

    CreatePet(player, _Creature, 33776);

    break;

case GOSSIP_ACTION_INFO_DEF + 16: //Spider

    CreatePet(player, _Creature, 2349);

    break;

case GOSSIP_ACTION_INFO_DEF + 17: //Dragonhawk

    CreatePet(player, _Creature, 27946);

    break;

case GOSSIP_ACTION_INFO_DEF + 18: //Bat

    CreatePet(player, _Creature, 28233);

    break;

case GOSSIP_ACTION_INFO_DEF + 19: //Ravager

    CreatePet(player, _Creature, 17199);

    break;

case GOSSIP_ACTION_INFO_DEF + 20: //Raptor

    CreatePet(player, _Creature, 14821);

    break;

case GOSSIP_ACTION_INFO_DEF + 21: //Serpent

    CreatePet(player, _Creature, 28358);

    break;

case GOSSIP_ACTION_INFO_DEF + 1: //bear

    CreatePet(player, _Creature, 29319);

    break;

case GOSSIP_ACTION_INFO_DEF + 2: //Boar

    CreatePet(player, _Creature, 29996);

    break;

case GOSSIP_ACTION_INFO_DEF + 3: //Bug

    CreatePet(player, _Creature, 28085);

    break;

case GOSSIP_ACTION_INFO_DEF + 4: //cat

    CreatePet(player, _Creature, 28097);

    break;

case GOSSIP_ACTION_INFO_DEF + 5: //carrion

    CreatePet(player, _Creature, 26838);

    break;

case GOSSIP_ACTION_INFO_DEF + 6: //crab

    CreatePet(player, _Creature, 24478);

    break;   

case GOSSIP_ACTION_INFO_DEF + 7: //crocolisk

    CreatePet(player, _Creature, 1417);

    break;  

case GOSSIP_ACTION_INFO_DEF + 8: //gorila

    CreatePet(player, _Creature, 28213);

    break;

case GOSSIP_ACTION_INFO_DEF + 9: //hound

    CreatePet(player, _Creature, 29452);

    break;

case GOSSIP_ACTION_INFO_DEF + 10: //hynea

    CreatePet(player, _Creature, 13036);

    break;

case GOSSIP_ACTION_INFO_DEF + 11: //Moth

    CreatePet(player, _Creature, 27421);

    break;

case GOSSIP_ACTION_INFO_DEF + 12: //owl

    CreatePet(player, _Creature, 23136);

    break;

case GOSSIP_ACTION_INFO_DEF + 13: //strider

    CreatePet(player, _Creature, 22807);

    break;

case GOSSIP_ACTION_INFO_DEF + 14: //scorpid

    CreatePet(player, _Creature, 9698);

    break;

case GOSSIP_ACTION_INFO_DEF + 15: //turtle

    CreatePet(player, _Creature, 25482);

    break;

}


return true;

};

void AddSC_npc_beastmaster()

{

new npc_beastmaster();

}

[/CODE]

EPIC , rep++ ,try this:

[CODE]#include “ScriptPch.h”

#include “ScriptMgr.h”

#include

#include

#include “Pet.h”

#include “Formulas.h”

#define GOSSIP_ITEM_STABLE “Stable”

#define GOSSIP_ITEM_NEWPET “New Pet”

#define GOSSIP_ITEM_BOAR “Boar”

#define GOSSIP_ITEM_SERPENT “Serpent”

#define GOSSIP_ITEM_SCRAB “Scrab”

#define GOSSIP_ITEM_LION “Lion”

#define GOSSIP_ITEM_WOLF “Wolf”

#define GOSSIP_ITEM_RAVAGER “Ravenger”

#define GOSSIP_ITEM_UNTRAINEPET “Restart Pet”

class npc_beastmaster : public CreatureScript

{

    public:

            npc_beastmaster() : CreatureScript("npc_beastmaster") {}

void CreatePet(Player *player, Creature * m_creature, uint32 entry) {

if(player->getClass() != CLASS_HUNTER) {

    m_creature->MonsterWhisper("You are not hunter! Your order have been rejected.", player->GetGUID());

    player->PlayerTalkClass->CloseGossip();

    return;

}


if(player->GetPet()) {

    m_creature->MonsterWhisper("First you must drop your pet!", player->GetGUID());

    player->PlayerTalkClass->CloseGossip();

    return;

}


Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);

if(!creatureTarget) return;


Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);

if(!pet) return;


// kill original creature

creatureTarget->setDeathState(JUST_DIED);

creatureTarget->RemoveCorpse();

creatureTarget->SetHealth(0);                       // just for nice GM-mode view


pet->SetPower(POWER_HAPPINESS, 1048000);


//pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE,0);

//pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32((Trinity::XP::xp_to_level(70))/4));


// prepare visual effect for levelup

    pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);

pet->GetMap()->Add((Creature*)pet);

// visual effect for levelup

pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());



/*if(!pet->InitStatsForLevel(player->getLevel()))

    error_log ("Pet Create fail: no init stats for entry %u", entry);*/


pet->UpdateAllStats();


// caster have pet now

player->SetMinion(pet, true);


pet->SavePetToDB(PET_SAVE_AS_CURRENT);

pet->InitTalentForLevel();

player->PetSpellInitialize();


//end

player->PlayerTalkClass->CloseGossip();

m_creature->MonsterWhisper("Pet added. You might want to feed it and name it somehow.", player->GetGUID());

};

bool GossipHello_npc_beastmaster(Player *player, Creature *_Creature)

{

if(player->getClass() != CLASS_HUNTER)

  {

  _Creature->MonsterWhisper("You are not hunter!", player->GetGUID());

    return true;

    }

  player->ADD_GOSSIP_ITEM(4, "Get new pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

  if (player->CanTameExoticPets())

  {

    player->ADD_GOSSIP_ITEM(4, "Get new exotic pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);

  }

  player->ADD_GOSSIP_ITEM(2, "Take me to stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

  player->ADD_GOSSIP_ITEM(6, "Sell me some food", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

return true;

};

                    //player->SEND_VENDORLIST( _Creature->GetGUID() );

bool GossipSelect_npc_beastmaster(Player *player, Creature *_Creature, uint32 sender, uint32 action)

{

switch (action)

{

case GOSSIP_ACTION_INFO_DEF + 100:

player->ADD_GOSSIP_ITEM(4, "Get new pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

  if (player->CanTameExoticPets())

  {

    player->ADD_GOSSIP_ITEM(4, "Get new exotic pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);

  }

  player->ADD_GOSSIP_ITEM(2, "Take me to stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

  player->ADD_GOSSIP_ITEM(6, "Sell me some food", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

  player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 30:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(4, "Next page >>", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 31);

player->ADD_GOSSIP_ITEM(6, "Bat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18);

player->ADD_GOSSIP_ITEM(6, "Bear", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);

player->ADD_GOSSIP_ITEM(6, "Boar", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);

player->ADD_GOSSIP_ITEM(6, "Cat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);

player->ADD_GOSSIP_ITEM(6, "Carrion Bird", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);

player->ADD_GOSSIP_ITEM(6, "Crab", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);

player->ADD_GOSSIP_ITEM(6, "Crocolisk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);

player->ADD_GOSSIP_ITEM(6, "Dragonhawk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);

player->ADD_GOSSIP_ITEM(6, "Gorilla", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);

player->ADD_GOSSIP_ITEM(6, "Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);

player->ADD_GOSSIP_ITEM(6, "Hyena", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);

player->ADD_GOSSIP_ITEM(6, "Moth", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);

player->ADD_GOSSIP_ITEM(6, "Owl", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 31:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(4, "<< Previous page", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

player->ADD_GOSSIP_ITEM(6, "Raptor", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20);

player->ADD_GOSSIP_ITEM(6, "Ravager", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19);

player->ADD_GOSSIP_ITEM(6, "Strider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);

player->ADD_GOSSIP_ITEM(6, "Scorpid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);

player->ADD_GOSSIP_ITEM(6, "Spider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);

player->ADD_GOSSIP_ITEM(6, "Serpent", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);  

player->ADD_GOSSIP_ITEM(6, "Turtle", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);

player->ADD_GOSSIP_ITEM(6, "Wasp", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);

player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;

case GOSSIP_ACTION_INFO_DEF + 50:

player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);

player->ADD_GOSSIP_ITEM(6, "Chimaera", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 51);

player->ADD_GOSSIP_ITEM(6, "Core Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 52);

player->ADD_GOSSIP_ITEM(6, "Devilsaur", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 53);

player->ADD_GOSSIP_ITEM(6, "Rhino", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 54);

player->ADD_GOSSIP_ITEM(6, "Silithid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 55);

player->ADD_GOSSIP_ITEM(6, "Worm", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 56);  

player->ADD_GOSSIP_ITEM(6, "Loque'nahak", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 57);

    player->ADD_GOSSIP_ITEM(6, "Skoll", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 58);

    player->ADD_GOSSIP_ITEM(6, "Gondria", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 59);

    player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

break;


    case GOSSIP_OPTION_STABLEPET:

        player->GetSession()->SendStablePet(_Creature->GetGUID());

        break; 

    case GOSSIP_OPTION_VENDOR:

        player->SEND_VENDORLIST( _Creature->GetGUID());

        break;

    case GOSSIP_ACTION_INFO_DEF + 51: //chimera

        CreatePet(player, _Creature, 21879);

        break;

    case GOSSIP_ACTION_INFO_DEF + 52: //core hound

        CreatePet(player, _Creature, 21108);

        break;

    case GOSSIP_ACTION_INFO_DEF + 53: //Devilsaur

        CreatePet(player, _Creature, 20931);

        break;

    case GOSSIP_ACTION_INFO_DEF + 54: //rhino

        CreatePet(player, _Creature, 30445);

        break;

    case GOSSIP_ACTION_INFO_DEF + 55: //silithid

        CreatePet(player, _Creature, 5460);

        break;

    case GOSSIP_ACTION_INFO_DEF + 56: //Worm

        CreatePet(player, _Creature, 30148);

        break;

    case GOSSIP_ACTION_INFO_DEF + 57: //Loque'nahak

        CreatePet(player, _Creature, 32517);

        break;

    case GOSSIP_ACTION_INFO_DEF + 58: //Skoll

        CreatePet(player, _Creature, 35189);

        break;

    case GOSSIP_ACTION_INFO_DEF + 59: //Gondria

        CreatePet(player, _Creature, 33776);

        break;

    case GOSSIP_ACTION_INFO_DEF + 16: //Spider

        CreatePet(player, _Creature, 2349);

        break;

    case GOSSIP_ACTION_INFO_DEF + 17: //Dragonhawk

        CreatePet(player, _Creature, 27946);

        break;

    case GOSSIP_ACTION_INFO_DEF + 18: //Bat

        CreatePet(player, _Creature, 28233);

        break;

    case GOSSIP_ACTION_INFO_DEF + 19: //Ravager

        CreatePet(player, _Creature, 17199);

        break;

    case GOSSIP_ACTION_INFO_DEF + 20: //Raptor

        CreatePet(player, _Creature, 14821);

        break;

    case GOSSIP_ACTION_INFO_DEF + 21: //Serpent

        CreatePet(player, _Creature, 28358);

        break;

    case GOSSIP_ACTION_INFO_DEF + 1: //bear

        CreatePet(player, _Creature, 29319);

        break;

    case GOSSIP_ACTION_INFO_DEF + 2: //Boar

        CreatePet(player, _Creature, 29996);

        break;

    case GOSSIP_ACTION_INFO_DEF + 3: //Bug

        CreatePet(player, _Creature, 28085);

        break;

    case GOSSIP_ACTION_INFO_DEF + 4: //cat

        CreatePet(player, _Creature, 28097);

        break;

    case GOSSIP_ACTION_INFO_DEF + 5: //carrion

        CreatePet(player, _Creature, 26838);

        break;

    case GOSSIP_ACTION_INFO_DEF + 6: //crab

        CreatePet(player, _Creature, 24478);

        break;   

    case GOSSIP_ACTION_INFO_DEF + 7: //crocolisk

        CreatePet(player, _Creature, 1417);

        break;  

    case GOSSIP_ACTION_INFO_DEF + 8: //gorila

        CreatePet(player, _Creature, 28213);

        break;

    case GOSSIP_ACTION_INFO_DEF + 9: //hound

        CreatePet(player, _Creature, 29452);

        break;

    case GOSSIP_ACTION_INFO_DEF + 10: //hynea

        CreatePet(player, _Creature, 13036);

        break;

    case GOSSIP_ACTION_INFO_DEF + 11: //Moth

        CreatePet(player, _Creature, 27421);

        break;

    case GOSSIP_ACTION_INFO_DEF + 12: //owl

        CreatePet(player, _Creature, 23136);

        break;

    case GOSSIP_ACTION_INFO_DEF + 13: //strider

        CreatePet(player, _Creature, 22807);

        break;

    case GOSSIP_ACTION_INFO_DEF + 14: //scorpid

        CreatePet(player, _Creature, 9698);

        break;

    case GOSSIP_ACTION_INFO_DEF + 15: //turtle

        CreatePet(player, _Creature, 25482);

        break;

}


return true;

}

};

void AddSC_npc_beastmaster()

{

new npc_beastmaster();

}

[/CODE]

does this work for latest revs?

this works in the lastest tc revs?, and what is this script for?

you can add all pets to hunder by gossip menu

But the script doesn’t compiles well, and unfortunately I don’t see any mistake in it to not be able to compile well. The errors during compilation comes from the registering script.

I’ll take a look at it real quick and get back to you

First thing I noticed…

#include “ScriptPch.h”

should be

#include “ScriptPCH.h”

still sifting through it but after that small edit it compiles. will run it in game. do you have any sql for it (trinity_strings or command stuffs?)

It compiled fine. I am worried about GossipHello in there instead of OnGossipHello but i’ll tell ya in a second.

Menu full bugged ill remake script in new topic

Sorry, forgot to click “attach this file”

10975-beastmaster.patch

you are correct. menu doesn’t work. even changing it to OnGossipHello and OnGossipSelect doesn’t help.

but here is a compilable script. no errors (maybe whitespace warnings tho)

just adding the script so someone can work on it. im a bit busy with bots at the moment.

i have had this script for a long time and last i tested it on was rev 10903

[CODE]

//Modified by Marcus

//original script created by ??

#include “ScriptPCH.h”

#define GOSSIP_ITEM_STABLE “Stable”

#define GOSSIP_ITEM_NEWPET “New Pet”

#define GOSSIP_ITEM_BOAR “Boar”

#define GOSSIP_ITEM_SERPENT “Serpent”

#define GOSSIP_ITEM_SCRAB “Scrab”

#define GOSSIP_ITEM_LION “Lion”

#define GOSSIP_ITEM_WOLF “Wolf”

#define GOSSIP_ITEM_RAVAGER “Ravenger”

#define GOSSIP_ITEM_UNTRAINEPET “Restart Pet”

class Npc_Beastmaster : public CreatureScript

{

public:

	Npc_Beastmaster() : CreatureScript("Npc_Beastmaster") { }

void CreatePet(Player *player, Creature * m_creature, uint32 entry) {

	if(player->getClass() != CLASS_HUNTER) {

		m_creature->MonsterWhisper("You are not a Hunter!", player->GetGUID());

		player->PlayerTalkClass->CloseGossip();

		return;

	}


	if(player->GetPet()) {

		m_creature->MonsterWhisper("First you must drop your Pet!", player->GetGUID());

		player->PlayerTalkClass->CloseGossip();

		return;

	}


	Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);

	if(!creatureTarget) return;


	Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);

	if(!pet) return;


	// kill original creature

	creatureTarget->setDeathState(JUST_DIED);

	creatureTarget->RemoveCorpse();

	creatureTarget->SetHealth(0);					   // just for nice GM-mode view


	pet->SetPower(POWER_HAPPINESS, 1048000);


	//pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE,0);

	//pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32((Trinity::XP::xp_to_level(70))/4));


	// prepare visual effect for levelup

		pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);

	pet->GetMap()->Add((Creature*)pet);

	// visual effect for levelup

	pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());



	if(!pet->InitStatsForLevel(player->getLevel()))

		sLog->outError ("Pet Create fail: no init stats for entry %u", entry);


	pet->UpdateAllStats();


	// caster have pet now

	player->SetMinion(pet, true);


	pet->SavePetToDB(PET_SAVE_AS_CURRENT);

	pet->InitTalentForLevel();

	player->PetSpellInitialize();


	//end

	player->PlayerTalkClass->CloseGossip();

	m_creature->MonsterWhisper("Pet added. You might want to feed it and name it somehow.", player->GetGUID());

}



bool OnGossipHello(Player *player, Creature * m_creature)

{


	if(player->getClass() != CLASS_HUNTER)

	{

		m_creature->MonsterWhisper("You are not a Hunter!", player->GetGUID());

		return true;

	}

	player->ADD_GOSSIP_ITEM(4, "Get a New Pet.", GOSSIP_SENDER_MAIN, 30);

	if (player->CanTameExoticPets())

	{

		player->ADD_GOSSIP_ITEM(4, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);

	}

	player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

	player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

			player->ADD_GOSSIP_ITEM(5, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);

	player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());

	return true;

}


bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action)

{

	player->PlayerTalkClass->ClearMenus();

	switch (action)

	{


	case 100:

		player->ADD_GOSSIP_ITEM(4, "Get a New Pet.", GOSSIP_SENDER_MAIN, 30);

		if (player->CanTameExoticPets())

		{

			player->ADD_GOSSIP_ITEM(4, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);

		}

		player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);

		player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);

					player->ADD_GOSSIP_ITEM(5, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);

		player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());

			break;


			case 150:

					player->CLOSE_GOSSIP_MENU();

			break;


	case 30:

		player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100);

		player->ADD_GOSSIP_ITEM(4, "Next Page. ->", GOSSIP_SENDER_MAIN, 31);

		player->ADD_GOSSIP_ITEM(6, "Bat.", GOSSIP_SENDER_MAIN, 18);

		player->ADD_GOSSIP_ITEM(6, "Bear.", GOSSIP_SENDER_MAIN, 1);

		player->ADD_GOSSIP_ITEM(6, "Boar.", GOSSIP_SENDER_MAIN, 2);

		player->ADD_GOSSIP_ITEM(6, "Cat.", GOSSIP_SENDER_MAIN, 4);

		player->ADD_GOSSIP_ITEM(6, "Carrion Bird.", GOSSIP_SENDER_MAIN, 5);

		player->ADD_GOSSIP_ITEM(6, "Crab.", GOSSIP_SENDER_MAIN, 6);

		player->ADD_GOSSIP_ITEM(6, "Crocolisk.", GOSSIP_SENDER_MAIN, 7);

		player->ADD_GOSSIP_ITEM(6, "Dragonhawk.", GOSSIP_SENDER_MAIN, 17);

		player->ADD_GOSSIP_ITEM(6, "Gorilla.", GOSSIP_SENDER_MAIN, 8);

		player->ADD_GOSSIP_ITEM(6, "Hound.", GOSSIP_SENDER_MAIN, 9);

		player->ADD_GOSSIP_ITEM(6, "Hyena.", GOSSIP_SENDER_MAIN, 10);

		player->ADD_GOSSIP_ITEM(6, "Moth.", GOSSIP_SENDER_MAIN, 11);

		player->ADD_GOSSIP_ITEM(6, "Owl.", GOSSIP_SENDER_MAIN, 12);

		player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());

			break;


	case 31:  

		player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 30);

		player->ADD_GOSSIP_ITEM(4, "<- Previous Page.", GOSSIP_SENDER_MAIN, 30);

		player->ADD_GOSSIP_ITEM(6, "Raptor.", GOSSIP_SENDER_MAIN, 20);

		player->ADD_GOSSIP_ITEM(6, "Ravager.", GOSSIP_SENDER_MAIN, 19);

		player->ADD_GOSSIP_ITEM(6, "Strider.", GOSSIP_SENDER_MAIN, 13);

		player->ADD_GOSSIP_ITEM(6, "Scorpid.", GOSSIP_SENDER_MAIN, 414);

		player->ADD_GOSSIP_ITEM(6, "Spider.", GOSSIP_SENDER_MAIN, 16);

		player->ADD_GOSSIP_ITEM(6, "Serpent.", GOSSIP_SENDER_MAIN, 21);  

		player->ADD_GOSSIP_ITEM(6, "Turtle.", GOSSIP_SENDER_MAIN, 15);

		player->ADD_GOSSIP_ITEM(6, "Wasp.", GOSSIP_SENDER_MAIN, 93);

		player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());

			break;


	case 50:  

		player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100);

					player->ADD_GOSSIP_ITEM(2, "<- Get a New Normal Pet.", GOSSIP_SENDER_MAIN, 100);

		player->ADD_GOSSIP_ITEM(6, "Chimaera.", GOSSIP_SENDER_MAIN, 51);

		player->ADD_GOSSIP_ITEM(6, "Core Hound.", GOSSIP_SENDER_MAIN, 52);

		player->ADD_GOSSIP_ITEM(6, "Devilsaur.", GOSSIP_SENDER_MAIN, 53);

		player->ADD_GOSSIP_ITEM(6, "Rhino.", GOSSIP_SENDER_MAIN, 54);

		player->ADD_GOSSIP_ITEM(6, "Silithid.", GOSSIP_SENDER_MAIN, 55);

		player->ADD_GOSSIP_ITEM(6, "Worm.", GOSSIP_SENDER_MAIN, 56);  

		player->ADD_GOSSIP_ITEM(6, "Loque'nahak.", GOSSIP_SENDER_MAIN, 57);

		player->ADD_GOSSIP_ITEM(6, "Skoll.", GOSSIP_SENDER_MAIN, 58);

		player->ADD_GOSSIP_ITEM(6, "Gondria.", GOSSIP_SENDER_MAIN, 59);

		player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());

			break;


		case GOSSIP_OPTION_STABLEPET:

			player->GetSession()->SendStablePet(m_creature->GetGUID());

		break;

		case GOSSIP_OPTION_VENDOR:

			player->SEND_VENDORLIST(m_creature->GetGUID());

		break;

		case 51: //chimera

			CreatePet(player, m_creature, 21879);

		break;

		case 52: //core hound

			CreatePet(player, m_creature, 21108);

		break;

		case 53: //Devilsaur

			CreatePet(player, m_creature, 20931);

		break;

		case 54: //rhino

			CreatePet(player, m_creature, 30445);

		break;

		case 55: //silithid

			CreatePet(player, m_creature, 5460);

		break;

		case 56: //Worm

			CreatePet(player, m_creature, 30148);

		break;

		case 57: //Loque'nahak

			CreatePet(player, m_creature, 32517);

		break;

		case 58: //Skoll

			CreatePet(player, m_creature, 35189);

		break;

		case 59: //Gondria

			CreatePet(player, m_creature, 33776);

		break;

		case 16: //Spider

			CreatePet(player, m_creature, 2349);

		break;

		case 17: //Dragonhawk

			CreatePet(player, m_creature, 27946);

		break;

		case 18: //Bat

			CreatePet(player, m_creature, 28233);

		break;

		case 19: //Ravager

			CreatePet(player, m_creature, 17199);

		break;

		case 20: //Raptor

			CreatePet(player, m_creature, 14821);

		break;

		case 21: //Serpent

			CreatePet(player, m_creature, 28358);

		break;

		case 1: //bear

			CreatePet(player, m_creature, 29319);

		break;

		case 2: //Boar

			CreatePet(player, m_creature, 29996);

		break;

		case 93: //Bug

			CreatePet(player, m_creature, 28085);

					break;

		case 4: //cat

			CreatePet(player, m_creature, 28097);

					break;

		case 5: //carrion

			CreatePet(player, m_creature, 26838);

					break;

		case 6: //crab

			CreatePet(player, m_creature, 24478);

					break;  

		case 7: //crocolisk

			CreatePet(player, m_creature, 1417);

					break;  

		case 8: //gorila

			CreatePet(player, m_creature, 28213);

					break;

		case 9: //hound

			CreatePet(player, m_creature, 29452);

					break;

		case 10: //hynea

			CreatePet(player, m_creature, 13036);

					break;

		case 11: //Moth

			CreatePet(player, m_creature, 27421);

					break;

		case 12: //owl

			CreatePet(player, m_creature, 23136);

					break;

		case 13: //strider

			CreatePet(player, m_creature, 22807);

					break;

		case 414: //scorpid

			CreatePet(player, m_creature, 9698);

					break;

		case 15: //turtle

			CreatePet(player, m_creature, 25482);

					break;

	}

	return true;

}

};

void AddSC_Npc_Beastmaster()

{

new Npc_Beastmaster();

}[/CODE]

GossipSelect_npc_beastmaster

|

v

OnGossipSelect

GossipHello_npc_beastmaster

|

v

OnGossipHello

Make sure you test it with a hunter.

Alright, the Marcus script works very well, thanks for the help, I see doing things at late nights doesn’t makes good benefit. The script only requires NPC that will handle the script name.

the script works as it should without mods (the one i posted) i have tested it several times and no crashes or problems.

Give who plz this patch under last revs.

Nice!! Working for me on the latest rev. Onli the “Food giving” think isnt working for me…

EDIT: Using Marcus’s one btw…

well you need to add a vendor flag to the npc. and add the food yourself in the vendor. (i have lost the original SQL file so i can’t provide it but if i find it i will post it here).

EDIT: i think i found it

[CODE]INSERT INTO creature_template (entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction_A, faction_H, npcflag, speed_walk, speed_run, scale, rank, mindmg, maxdmg, dmgschool, attackpower, dmg_multiplier, baseattacktime, rangeattacktime, unit_class, unit_flags, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, minrangedmg, maxrangedmg, rangedattackpower, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, Health_mod, Mana_mod, Armor_mod, RacialLeader, questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, movementId, RegenHealth, equipment_id, mechanic_immune_mask, flags_extra, ScriptName, WDBVerified) VALUES (99999, 0, 0, 0, 0, 0, 20918, 0, 0, 0, ‘Rexxar’, ‘Pet Giver’, ‘’, 0, 80, 80, 0, 35, 35, 4194433, 1, 1.14286, 0.6, 1, 1755, 1755, 0, 1504, 1, 1500, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ‘’, 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, ‘Npc_Beastmaster’, 0);

INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost) VALUES (99999, 0, 43087, 0, 0, 0);

INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost) VALUES (99999, 0, 35950, 0, 0, 0);

INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost) VALUES (99999, 0, 36782, 0, 0, 0);

[/CODE]

Thanks man … testing…!

it should work (the npc) but im not so sure about the vendor but i think it will work too.

100% working tested ingame … nice =] Thanks Marcus ^^