PNJ VIP 3.3.5
Code :
#include "ScriptPCH.h"

//VIP NPC, codé par minig, traduit par Subway's

#define TOKEN 12345

//rename config
#define rename_method 1
#define rename_numtok 1
#define rename_numcooper 1

//Factionchange config
#define faction_method 1
#define faction_numtok 1
#define faction_numcooper 1

//RaceChange Config
#define race_method 1
#define race_numtok 1
#define race_numcooper 1

//Customize Config
#define cust_method 1
#define cust_numtok 1
#define cust_numcooper 1

//Teleport Config
#define tele_method 1
#define tele_numtok 1
#define tele_numcooper 1

//changement possible
#define RENAME 1
#define FACTIONCHANGE 2
#define RACECHANGE 3
#define CUSTOMIZE 4
#define TELEPORT 6

static char moneyerr[18] = "Vous n'avez pas d'argent !";
static char tokenerr[19] = "vous n'avez pas de Token!";

bool paytok(int num, Player * player)
{
  if(!player->HasItemCount(TOKEN, num, false ))
   return false;
  else
     player->DestroyItemCount(TOKEN, num, true, false);
  return true;
}

bool paymoney(int num, Player * player)
{
  if(!player->GetMoney >= num)
    return false;
  else
   player->ModifyMoney(-num);
  return true;
}

bool pay(short type, Player * player)
{
  switch(type)
  {
  case RENAME:
   switch(rename_method)
   {
   case 0:
    if(paymoney(rename_numcooper, player))
      return true;
    else
      return false;
    break;
   case 1:
    if(paytok(rename_numtok, player))
      return true;
    else
      return false;
    break
   }
  case FACTIONCHANGE:
   switch(faction_method)
   {
   case 0:
    if(paymoney(faction_numcooper, player))
      return true;
    break;
   case 1:
    if(paytok(faction_numtok, player))
      return true;
    break;
   }
  case RACECHANGE:
   switch(race_method)
   {
   case 0:
    if(paymoney(race_numcooper, player))
      return true;
    break;
   case 1:
    if(paytok(race_numtok, player))
      return true;
    break;
   }
  case CUSTOMIZE:
   switch(cust_method)
   {
   case 0:
    if(paymoney(cust_numcooper, player))
      return true;
    break;
   case 1:
    if(paytok(cust_numtok, player))
      return true;
    break;
   }
  case TELEPORT;
   switch(tele_method)
   {
   case 0:
    if(paymoney(tele_numcooper, player))
      return true;
    break;
   case 1:
    if(paytok(tele_numtok, player))
      return true;
    break;
   }
}
  return false;
}

void tele_error()
{
switch(tele_method)
{
  case 0:
   npc->MonsterWhisper(moneyerr, player->GetGUID());
   break;
  case 1:
   npc->MonsterWhisper(tokenerr, player->GetGUID());
   break;
}
}

class vip_npc : public CreatureScript
{
public:
  vip_npc() : CreatureScript("vip_npc") {}
  bool OnGossipHello(Player *player, Creature *npc);
  bool OnGossipSelect(Player *player, Creature *npc, uint32 sender, uint32 uiAction);
};


bool vip_npc::OnGossipHello(Player *player, Creature *npc)
{
if (player->isInCombat())
        {
            player->CLOSE_GOSSIP_MENU();
            npc->MonsterWhisper("Vous êtes en combat!", player->GetGUID());
            return true;
        }
        else
        {
            player->ADD_GOSSIP_ITEM( 6, "Rename", GOSSIP_SENDER_MAIN, 1);
            player->ADD_GOSSIP_ITEM( 6, "Changement de Faction", GOSSIP_SENDER_MAIN, 2);
            player->ADD_GOSSIP_ITEM( 6, Changement de Race", GOSSIP_SENDER_MAIN, 3);
            player->ADD_GOSSIP_ITEM( 6, "Nouveau Look", GOSSIP_SENDER_MAIN, 4);
            player->ADD_GOSSIP_ITEM( 2, "Teleportation", GOSSIP_SENDER_MAIN, 6);
        }

        player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());        
        return true;

}

bool vip_npc::OnGossipSelect(Player *player, Creature *npc, uint32 sender, uint32 uiAction)
{
switch(uiAction)
            {
         case 1: //Rename
          if(pay(RENAME, player))
          {
           player->CLOSE_GOSSIP_MENU();
           player->SetAtLoginFlag(AT_LOGIN_RENAME);
           npc->MonsterWhisper("Vous devez maintenant vous reconnectez", player->GetGUID());
          }
          else
          {
            player->CLOSE_GOSSIP_MENU();
            switch(rename_method)
            {
             case 0:
              npc->MonsterWhisper(moneyerr, player->GetGUID());
              break;
             case 1:
              npc->MonsterWhisper(tokenerr, player->GetGUID());
              break;                                  
            }
          }
          break;

         case 2: //Customize
          if(pay(CUSTOMIZE, player))
          {
           player->CLOSE_GOSSIP_MENU();
           player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
           npc->MonsterWhisper("Novy vzhled si nastavis pri relogu.", player->GetGUID());
          }
          else
          {
            player->CLOSE_GOSSIP_MENU();
            switch(cust_method)
            {
             case 0:
              npc->MonsterWhisper(moneyerr, player->GetGUID());
              break;
             case 1:
              npc->MonsterWhisper(tokenerr, player->GetGUID());
              break;                                
            }
          }
          break;

       case 3: //Race Change
        if(pay(RACECHANGE, player))
        {
         player->CLOSE_GOSSIP_MENU();
         player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
         npc->MonsterWhisper("Vous devez maintenant vous reconnectez.", player->GetGUID());
        }
        else
        {
         player->CLOSE_GOSSIP_MENU();
         switch(race_method)
         {
         case 0:
           npc->MonsterWhisper(moneyerr, player->GetGUID());
           break;
         case 1:
          npc->MonsterWhisper(tokenerr, player->GetGUID());
          break;                                  
         }
        }
        break;

       case 4: //Faction Change
        if(pay(FACTIONCHANGE, player))
        {
        player->CLOSE_GOSSIP_MENU();
        player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
        npc->MonsterWhisper("Vous devez maintenant vous reconnectez", player->GetGUID());
        }
        else
        {
        player->CLOSE_GOSSIP_MENU();
        switch(faction_method)
        {
        case 0:
         npc->MonsterWhisper(moneyerr, player->GetGUID());
         break;
        case 1:
         npc->MonsterWhisper(tokenerr, player->GetGUID());
         break;
        }
        }                              
       break;
      
                        case 6: //Teleport
                                if (player->GetTeam() == HORDE ) //destination Horde
                                {
                                        player->ADD_GOSSIP_ITEM(2, "Orgrimmar", GOSSIP_SENDER_MAIN, 7);
                                        player->ADD_GOSSIP_ITEM(2, "Thunder Bluff", GOSSIP_SENDER_MAIN, 8);
                                        player->ADD_GOSSIP_ITEM(2, "Silvermoon ", GOSSIP_SENDER_MAIN, 9);
                                        player->ADD_GOSSIP_ITEM(2, "Undercity", GOSSIP_SENDER_MAIN, 10);
                                }
        
                                else //destination Alliance
                                {
                                        player->ADD_GOSSIP_ITEM(2, "Hurlevent", GOSSIP_SENDER_MAIN, 11);
                                        player->ADD_GOSSIP_ITEM(2, "Forgefer", GOSSIP_SENDER_MAIN, 12);
                                        player->ADD_GOSSIP_ITEM(2, "Exodar", GOSSIP_SENDER_MAIN, 13);
                                        player->ADD_GOSSIP_ITEM(2, "Darnassus", GOSSIP_SENDER_MAIN, 14);
                                }
                                if(player->getLevel() >= 58) //Do Outlandu od levelu 58
                                        player->ADD_GOSSIP_ITEM(2, "Shattrath ", GOSSIP_SENDER_MAIN, 15);
                                if(player->getLevel() >= 68) //Do Northrendu od levelu 68
                                        player->ADD_GOSSIP_ITEM(2, "Dalaran", GOSSIP_SENDER_MAIN, 16);
                                player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
                                break;
                        case 7: //Orgrimmar
                          player->CLOSE_GOSSIP_MENU();
                         if(pay(TELEPORT, player))
                                player->TeleportTo(1, 1483.25f, -4416.525f, 25.003f, 0f);
                         else
                                tele_error();
                         break;
                        case 8: //Thunder Bluff
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(1, -1197.3f, 30f , 177f, 1.589f);
                                else
                                 tele_error;
                                break;
                        case 9: //Silvermoon City
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(530f, 9530.775f, -7300.459f, 15.24f, 3.139f);
                                else
                                 tele_error();
                                break;
                        case 10: //Undercity
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(0, 1560.7f, 240.45f, -43.1045f, 0.01f);
                                else
                                 tele_error();
                                break;
                        case 11: //Stormwind City
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(0, -8800.41f, 622.355f, 96.8f, 2.255f);
                                else
                                 tele_error();
                                break;
                        case 12: //Ironforge
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(0, -4918.880f, -940.406f, 501.57f, 5.42f);
                                else
                                 tele_error();
                                break;
                        case 13: //The Exodar
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(530 , -4016.944f, -11675.455f, -134.932f , 0);
                                else
                                 tele_error();
                                break;
                        case 14: //Darnassus
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(1, 9951.804f, 2280.401f, 1341.394f, 1.425f);
                                else
                                 tele_error();
                                break;
                        case 15: //Shattrath City
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(530, -1837.538f, 5378.270f, -12.427f, 1.941f);
                                else
                                 tele_error();
                                break;
                        case 16: //Dalaran
                                player->CLOSE_GOSSIP_MENU();
                                if(pay(TELEPORT, player))
                                 player->TeleportTo(571, 5848.875f, 602.287f, 651.142f, 2.448f);
                                else
                                 tele_error();
                                break;
                      }
                                
}

void AddScVIP()
{
new vip_npc();
}


merci de pas oublié +1 pour merci
La langue est étrange Blink : "Novou rasu u druhe frakce si zvolis pri relogu" pour les messages.. Tu as pris ce script sur un forum Tchèque ou quoi mdrrr Clin
oui exact, le npc etait pas mal donc je l'ai partagé ici . ( j'ai traduit ce qui manquer )
Nice GG !

Retourner en haut Accueil