PNJ téléporteur et métiers
Bonjour ! Voici deux scripts fais par moi même je débute dans la matière, soyez indulgent Smile

Npc métiers ( apprend le métier et le met à sa compétence maximum donc 450 )

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

#define SPELL_CALLIGRAPHIE     45363
#define SKILL_CALLIGRAPHIE     773

#define SPELL_INGENIEUR  51306
#define SKILL_INGENIEUR  202

#define SPELL_ENCHANTEUR 51313
#define SKILL_ENCHANTEUR 333

#define SPELL_TRAVAILDUCUIR 51302
#define SKILL_TRAVAILDUCUIR 165

#define SPELL_COUTURE 51309
#define SKILL_COUTURE 197

#define SPELL_FORGE 51300
#define SKILL_FORGE 164

#define SPELL_JOAILLER 51311
#define SKILL_JOAILLER 755

#define SPELL_HERBORISTERIE 50301
#define SKILL_HERBORISTERIE 182

#define SPELL_SECOURISME 45542
#define SKILL_SECOURISME 129

#define SPELL_ALCHIMIE 51304
#define SKILL_ALCHIMIE 171

#define SPELL_CUISINE 51296
#define SKILL_CUISINE 185




class npc_metiers : public CreatureScript
{
    public:

        npc_metiers()
            : CreatureScript("npc_metiers")
        {
        }

        bool OnGossipHello(Player* pPlayer, Creature* pCreature)
        {
            
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Calligraphie", GOSSIP_SENDER_MAIN, 2000); //ACTION 2000
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ingenierie", GOSSIP_SENDER_MAIN, 2001);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Enchantement", GOSSIP_SENDER_MAIN, 2002);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Travail du cuir", GOSSIP_SENDER_MAIN, 2003);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Couture", GOSSIP_SENDER_MAIN, 2004);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Forge", GOSSIP_SENDER_MAIN, 2005);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Joaillerie", GOSSIP_SENDER_MAIN, 2006);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Herboristerie", GOSSIP_SENDER_MAIN, 2007);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Secourisme", GOSSIP_SENDER_MAIN, 2008);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Alchimie", GOSSIP_SENDER_MAIN, 2009);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Cuisine", GOSSIP_SENDER_MAIN, 2010);
            
            
            
            pPlayer->PlayerTalkClass->SendGossipMenu(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());

            return true;
        }

        bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
        {
            pPlayer->PlayerTalkClass->ClearMenus();
            
                //SELECTION SELON ACTION
                switch(uiAction)
                {
                    case 2000:
                        
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_CALLIGRAPHIE, true); //SPELL ID CALIGRAPHIE                        
                        pPlayer->SetSkill(SKILL_CALLIGRAPHIE, pPlayer->GetSkillStep(SKILL_CALLIGRAPHIE), 450, pPlayer->GetPureMaxSkillValue(SKILL_CALLIGRAPHIE));

                        break;
                        
                    case 2001:
                
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_INGENIEUR, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_INGENIEUR, pPlayer->GetSkillStep(SKILL_INGENIEUR), 450, pPlayer->GetPureMaxSkillValue(SKILL_INGENIEUR));
                        //SORTIE DU SWITCH => SELECTION
                        break;
                        
                
                    case 2002:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_ENCHANTEUR, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_ENCHANTEUR, pPlayer->GetSkillStep(SKILL_ENCHANTEUR), 450, pPlayer->GetPureMaxSkillValue(SKILL_ENCHANTEUR));
                        break;

                    
                    
                    case 2003:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_TRAVAILDUCUIR, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_TRAVAILDUCUIR, pPlayer->GetSkillStep(SKILL_TRAVAILDUCUIR), 450, pPlayer->GetPureMaxSkillValue(SKILL_TRAVAILDUCUIR));
                        break;
                        
                    
                    case 2004:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_COUTURE, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_COUTURE, pPlayer->GetSkillStep(SKILL_COUTURE), 450, pPlayer->GetPureMaxSkillValue(SKILL_COUTURE));
                        break;
                        
                    
                    case 2005:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_FORGE, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_FORGE, pPlayer->GetSkillStep(SKILL_FORGE), 450, pPlayer->GetPureMaxSkillValue(SKILL_FORGE));
                        break;
                        
                        
                    case 2006:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_JOAILLER, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_JOAILLER, pPlayer->GetSkillStep(SKILL_JOAILLER), 450, pPlayer->GetPureMaxSkillValue(SKILL_JOAILLER));
                        break;
                        
                        
                    case 2007:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_HERBORISTERIE, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_HERBORISTERIE, pPlayer->GetSkillStep(SKILL_HERBORISTERIE), 450, pPlayer->GetPureMaxSkillValue(SKILL_HERBORISTERIE));
                        break;
                        
                        
                    case 2008:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_SECOURISME, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_SECOURISME, pPlayer->GetSkillStep(SKILL_SECOURISME), 450, pPlayer->GetPureMaxSkillValue(SKILL_SECOURISME));
                        break;
                        
                        
                    case 2009:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_ALCHIMIE, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_ALCHIMIE, pPlayer->GetSkillStep(SKILL_ALCHIMIE), 450, pPlayer->GetPureMaxSkillValue(SKILL_ALCHIMIE));
                        break;
                        
                        
                    case 2010:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->learnSpell(SPELL_CUISINE, true); //SPELL ID INGENIEUR                        
                        pPlayer->SetSkill(SKILL_CUISINE, pPlayer->GetSkillStep(SKILL_CUISINE), 450, pPlayer->GetPureMaxSkillValue(SKILL_CUISINE));
                        break;


                        }  

            return true;

        }


};

void AddSC_npc_metiers()
{
    new npc_metiers();
}

Et un NPC téléporteur :

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

class npc_teleporteur : public CreatureScript
{
    public:

        npc_teleporteur()
            : CreatureScript("npc_teleporteur")
        {
        }

        bool OnGossipHello(Player* pPlayer, Creature* pCreature)
        {
            // TEXT BONJOUR NOM JOUEUR
            //DoScriptText(SAY_HELLO, pCreature);

            /*MENU
            
            
            if(pPlayer->getClass() == CLASS_HUNTER)  {
                    //HUNTER
            
            }
        
            
            if(pPlayer->isGameMaster()) {
                
                    
            } else if(pPlayer->GetTeam() == ALLIANCE) { //SI LE JOUEUR EST ALLIANCEUX
                //ALLIANCE
                
                
            } else { //SINON IL EST HORDEUX
            
                //HORDE
                
            }
            */
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Zone Duel", GOSSIP_SENDER_MAIN, 2000); //ACTION 2000
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "Zone Shop", GOSSIP_SENDER_MAIN, 2001);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Hache-Tripes", GOSSIP_SENDER_MAIN, 2002);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Dalaran", GOSSIP_SENDER_MAIN, 2003);
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Shattrath", GOSSIP_SENDER_MAIN, 2004);
            
            pPlayer->PlayerTalkClass->SendGossipMenu(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());

            return true;
        }

        bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
        {
            pPlayer->PlayerTalkClass->ClearMenus();
            
                //SELECTION SELON ACTION
                switch(uiAction)
                {
                    case 2000:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        //DoScriptText(SAY_WRONG_LEVEL, pCreature);
                        pPlayer->TeleportTo(1, -10710.816406f, 2482.410156f,7.921670f, 3.411966f);
                        break;
                        
                    case 2001:
                    //TELEPORTATION
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->TeleportTo(1, -5084.569824f, -1970.650024f,91.536987f, 2.152980f);
                        //SORTIE DU SWITCH => SELECTION
                        break;
                        
                
                    case 2002:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->TeleportTo(1, -3760.950439f, 1174.449097f,127.435844f, 4.705639f);
                        break;
                        
                        
                    case 2003:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->TeleportTo(571, 5804.149902f, 624.770996f,647.767029f, 1.640f);
                        break;
                        
                        
                    case 2004:
                        pPlayer->CLOSE_GOSSIP_MENU();
                        pPlayer->TeleportTo(530, -1838.160034f, 5301.790039f,-12.4280f, 5.95170);
                        break;
                }  

            return true;

        }


};

void AddSC_npc_teleporteur()
{
    new npc_teleporteur();
}
Utilise les balises CPP -> [code=cpp]
Je suis désolé, mais je ne sais pas faire ça Erf
Merci bien pour ton partage Clin

Pour te filer un petit coup de main, MaNGOS/Trinity on déjà énuméré les skills des métiers. Pour ce qui est des spells je ne sais pas c'est à vérifier.
Tu peux donc directement utiliser dans ton code "SKILL_ALCHEMY", ...

Voilà.

Cordialement,
et65.
Ah, génial merci bien pour cette astuce Smile , aucun problème pour le partage , sinon le script est correct ? Hihi
(08-03-2011 23:16)djsmack a écrit :  Ah, génial merci bien pour cette astuce Smile , aucun problème pour le partage , sinon le script est correct ? Hihi

Oui ça me parait bon à première vu Smile.
(08-03-2011 23:06)djsmack a écrit :  Je suis désolé, mais je ne sais pas faire ça Erf

[code=cpp] ton text [/code]

[code=cpp] [/code ] oublie pas de retirer l'espace entre "e" et "]"

Retourner en haut Accueil