mangos zone
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


core emulateur mangos sql patch
 
AccueilDernières imagesRechercherS'enregistrerConnexion
Le Deal du moment :
ETB Pokémon Fable Nébuleuse : où ...
Voir le deal

 

 NPC Familliers Service

Aller en bas 
AuteurMessage
dorian




Messages : 5
Date d'inscription : 17/02/2011

NPC Familliers Service Empty
MessageSujet: NPC Familliers Service   NPC Familliers Service EmptyVen 18 Fév - 19:24

Voilà un Pnj qui permet au chasseurs d'avoir un familier sans passer par une zone pet ou autres.

Adapter en 3.3.5
source : WoW-ressources


Code:
/*Adapter par Dorian*/

#include "ScriptPCH.h"
#include "ScriptMgr.h"
#include <cstring>
#include "Pet.h"
#include "Formulas.h"

class at_beastmaster : public CreatureScript
{
public:
    at_beastmaster() : CreatureScript("at_beastmaster") { }

void CreatePet( Player *player, Creature * m_creature, uint32 entry )
{
    if(player->getClass() != CLASS_HUNTER)
    {
        m_creature->MonsterWhisper("Vous etes pas chasseur! Votre commande a ete rejetee.", 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;

    creatureTarget->setDeathState(JUST_DIED);
    creatureTarget->RemoveCorpse();
    creatureTarget->SetHealth(0);
    pet->SetPower(POWER_HAPPINESS, 1048000);
    pet->SetUInt32Value(UNIT_FIELD_LEVEL, 79);
    pet->GetMap()->Add((Creature*)pet);
    pet->SetUInt32Value(UNIT_FIELD_LEVEL, 80);

    if(!pet->InitStatsForLevel(80))
        sLog.outError("Pet Create fail: no init stats for entry %u", entry);

    pet->UpdateAllStats();
    player->SetMinion(pet, true);
    pet->SavePetToDB(PET_SAVE_AS_CURRENT);
    pet->InitTalentForLevel();
    player->PetSpellInitialize();
    player->PlayerTalkClass->CloseGossip();
    m_creature->MonsterWhisper("Animaux ajoute. Vous voudrez peut-etre  le nourrir et le renommer en quelque sorte.", player->GetGUID());
}

bool OnGossipHello( Player *player, Creature *_Creature )
{
    if(player->getClass() != CLASS_HUNTER)
    {
        _Creature->MonsterWhisper("Vous etes pas chasseur!", player->GetGUID());
        return true;
    }

    player->ADD_GOSSIP_ITEM(4, "Obtenez nouvel animal de compagnie", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);

    if (player->CanTameExoticPets())
    {
        player->ADD_GOSSIP_ITEM(4, "Obtenez de nouveaux animaux de compagnie exotiques", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);
    }

    player->ADD_GOSSIP_ITEM(2, "Emmener moi", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
    player->ADD_GOSSIP_ITEM(6, "Vendez-moi un peu de nourriture", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
    player->SEND_GOSSIP_MENU(1,_Creature->GetGUID());

    return true;
}

bool OnGossipSelect( Player *player, Creature *_Creature, uint32 sender, uint32 action )
{
    player->PlayerTalkClass->ClearMenus();

    switch(action)
    {
    case GOSSIP_ACTION_INFO_DEF + 100:
        player->ADD_GOSSIP_ITEM(4, "Obtenez nouvel animal de compagnie", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);
        if (player->CanTameExoticPets())
        {
            player->ADD_GOSSIP_ITEM(4, "Obtenez de nouveaux animaux de compagnie exotiques", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50);
        }
        player->ADD_GOSSIP_ITEM(2, "Emmener moi", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
        player->ADD_GOSSIP_ITEM(6, "Vendez-moi un peu de nourriture", 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, "<< Retour au menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100);
        player->ADD_GOSSIP_ITEM(4, "Page suivante >>", 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, "<< Retour au 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, "<< Retour au 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->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 + 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_at_beastmaster()
{
new at_beastmaster;
}
Revenir en haut Aller en bas
 
NPC Familliers Service
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
mangos zone :: EMULATEUR :: Patch C++ :: Trinity-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser