Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
eventai

VIP NPC

Recommended Posts

Prosím o předělání tak aby se neplatilo tokenama a nebyly tam teleporty. Díky

 

#include "ScriptPCH.h"

//VIP NPC, coded by minig

//method 0 - hráči platí v cooperech
//method 1 - hráči platí v itemech(tokenech)
//method se nastavuje u všeho zvlášť

// *_numtok - počet tokenů k zaplacení
// *_numcooper - počet cooperů k nastavení

//id itemu, kterým se platí(token...)
#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

//typy změn
#define RENAME 1
#define FACTIONCHANGE 2
#define RACECHANGE 3
#define CUSTOMIZE 4
#define TELEPORT 6


static char moneyerr[18] = "Nedostatek penez!";
static char tokenerr[19] = "Nedostatek tokenu!";

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(Creature * npc, Player * player)
{
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("Jsi v combatu!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 6, "Rename", GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 6, "Zmena vzhledu", GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 6, "Zmena rasy", GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Zmena frakce", GOSSIP_SENDER_MAIN, 4);
           player->ADD_GOSSIP_ITEM( 2, "Teleport", 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("Nove jmeno si nastavis po relogu", 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("Novou rasu si zvolis pri relogu.", 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("Novou rasu u druhe frakce si zvolis pri relogu", 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 ) //Hordská města
      {
      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 City", GOSSIP_SENDER_MAIN, 9);
      player->ADD_GOSSIP_ITEM(2, "Undercity", GOSSIP_SENDER_MAIN, 10);
      }

      else //Alianční města
      {
      player->ADD_GOSSIP_ITEM(2, "Stormwind City", GOSSIP_SENDER_MAIN, 11);
      player->ADD_GOSSIP_ITEM(2, "Ironforge", GOSSIP_SENDER_MAIN, 12);
      player->ADD_GOSSIP_ITEM(2, "The 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 City", 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, 0);
      else
        tele_error(npc, player);
      break;
     case 8: //Thunder Bluff
      player->CLOSE_GOSSIP_MENU();
      if(pay(TELEPORT, player))
        player->TeleportTo(1, -1197.3f, 30 , 177, 1.589f);
      else
        tele_error(npc, player);
      break;
     case 9: //Silvermoon City
      player->CLOSE_GOSSIP_MENU();
      if(pay(TELEPORT, player))
       player->TeleportTo(530, 9530.775f, -7300.459f, 15.24f, 3.139f);
      else
       tele_error(npc, player);
      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(npc, player);
      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(npc, player);
                               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(npc, player);
                               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(npc, player);
                               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(npc, player);
                               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(npc, player);
                               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(npc, player);
                               break;

                     }
 return true;

}

void AddScVIP()
{
new vip_npc();
}

 

Edited by eventai
  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

jen umažeš kousek kódu, co je za problém?

 

EDIT: když chvilku vydržíš, hodím ti to sem

Edited by minig

Share this post


Link to post
Share on other sites

 

 

#include "ScriptPCH.h"

//VIP NPC, coded by minig


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("Jsi v combatu!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 6, "Rename", GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 6, "Zmena vzhledu", GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 6, "Zmena rasy", GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Zmena frakce", GOSSIP_SENDER_MAIN, 4);
       }

       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 
          player->CLOSE_GOSSIP_MENU();
          player->SetAtLoginFlag(AT_LOGIN_RENAME);
          npc->MonsterWhisper("Nove jmeno si nastavis po relogu", player->GetGUID());
          break;

        case 2: //Customize

          player->CLOSE_GOSSIP_MENU();
          player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
          npc->MonsterWhisper("Novy vzhled si nastavis pri relogu.", player->GetGUID());
          break;

        case 3: //Race Change
          player->CLOSE_GOSSIP_MENU();
          player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
          npc->MonsterWhisper("Novou rasu si zvolis pri relogu.", player->GetGUID());
          break;

       case 4: //Faction Change
         player->CLOSE_GOSSIP_MENU();
         player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
         npc->MonsterWhisper("Novou rasu u druhe frakce si zvolis pri relogu", player->GetGUID());                      
         break;

}
 return true;

}

void AddScVIP()
{
new vip_npc();
}

 

 

 

Tak snad jsem to v tý rychlosti očesal dobře, smazal jsem porty a placení...

Share this post


Link to post
Share on other sites

Díky moc, ale já jsem chtěl placení jenom v copprech ne neplatit

Edited by eventai
  • Downvote 3

Share this post


Link to post
Share on other sites

Tak a teď bys to mohl zkusit sám co říkáš? Mi tu pořád nebudeme...

Share this post


Link to post
Share on other sites

Díky moc, ale já jsem chtěl placení jenom v copprech ne neplatit

 

to si robíš prču :D V tom scriptu se to dalo nastavit... buď platit tokenama nebo cooperama :) stačí číst....

Share this post


Link to post
Share on other sites

tak jsem to zkoušel a mám to takle jenom poprosím o kontrolu

 

#include "ScriptPCH.h"

//VIP NPC, coded by minig

//method 1 - hráči platí v cooperech
//method 0 - hráči platí v itemech(tokenech)
//method se nastavuje u všeho zvlášť

// *_numtok - počet tokenů k zaplacení
// *_numcooper - počet cooperů k nastavení

//id itemu, kterým se platí(token...)
#define TOKEN 12345

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

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

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

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

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

//typy změn
#define RENAME 1
#define FACTIONCHANGE 2
#define RACECHANGE 3
#define CUSTOMIZE 4


static char moneyerr[18] = "Nedostatek penez!";
static char tokenerr[19] = "Nedostatek tokenu!";

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(Creature * npc, Player * player)
{
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("Jsi v combatu!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 6, "Rename", GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 6, "Zmena vzhledu", GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 6, "Zmena rasy", GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Zmena frakce", GOSSIP_SENDER_MAIN, 4);
           player->ADD_GOSSIP_ITEM( 2, "Teleport", 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("Nove jmeno si nastavis po relogu", 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("Novou rasu si zvolis pri relogu.", 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("Novou rasu u druhe frakce si zvolis pri relogu", 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;

                     }
 return true;

}

void AddScVIP()
{
new vip_npc();
}

 

Share this post


Link to post
Share on other sites

to by ti i mohlo jet, skus to... já jsem mezitím vyplodil tohle:

 

 

 

#include "ScriptPCH.h"

//VIP NPC, coded by minig

//rename config
#define rename_numcooper 1

//Factionchange config
#define faction_numcooper 1

//RaceChange Config
#define race_numcooper 1

//Customize Config
#define cust_numcooper 1

//typy změn
#define RENAME 1
#define FACTIONCHANGE 2
#define RACECHANGE 3
#define CUSTOMIZE 4


static char moneyerr[18] = "Nedostatek penez!";


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:
   if(paymoney(rename_numcooper, player))
     return true;
   else
     return false;

 case FACTIONCHANGE:
   if(paymoney(faction_numcooper, player))
     return true;
   else
     return false;
 case RACECHANGE:
   if(paymoney(race_numcooper, player))
     return true; 
   else
     return false;
 case CUSTOMIZE:
   if(paymoney(cust_numcooper, player))
     return true;
   else
     return false;
 }
 return false;
}

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("Jsi v combatu!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 6, "Rename", GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 6, "Zmena vzhledu", GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 6, "Zmena rasy", GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Zmena frakce", GOSSIP_SENDER_MAIN, 4);
       }

       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("Nove jmeno si nastavis po relogu", player->GetGUID());
         }
         else
         {
           player->CLOSE_GOSSIP_MENU();
           npc->MonsterWhisper(moneyerr, player->GetGUID());
         }
         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();
           npc->MonsterWhisper(moneyerr, player->GetGUID());
         }
         break;

      case 3: //Race Change
       if(pay(RACECHANGE, player))
       {
        player->CLOSE_GOSSIP_MENU();
        player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
        npc->MonsterWhisper("Novou rasu si zvolis pri relogu.", player->GetGUID());
       }
       else
       {
        player->CLOSE_GOSSIP_MENU();
        npc->MonsterWhisper(moneyerr, player->GetGUID());                       
        }
       }
       break;

      case 4: //Faction Change
       if(pay(FACTIONCHANGE, player))
       {
       player->CLOSE_GOSSIP_MENU();
       player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
       npc->MonsterWhisper("Novou rasu u druhe frakce si zvolis pri relogu", player->GetGUID());
       }
       else
       {
       player->CLOSE_GOSSIP_MENU();
       npc->MonsterWhisper(moneyerr, player->GetGUID());
       }                               
      break;                        
}
 return true;

}

void AddScVIP()
{
new vip_npc();
}

 

 

 

Oproti tvýmu kódu to má jeden zásadní rozdíl - kromě toho, že jsem umazal casy na teleport, tak jsem mazal i další přebytečné části kódu...

Edited by minig

Share this post


Link to post
Share on other sites

Zkusím ten tvůj je to jistější :D Díky

ve script loaderu to ma bejt jako vip_npc ?

Edited by eventai

Share this post


Link to post
Share on other sites

Zkusím ten tvůj je to jistější :D Díky

ve script loaderu to ma bejt jako vip_npc ?

 

void AddScVIP();

 

a

 

AddScVIP();

  • Upvote 1

Share this post


Link to post
Share on other sites

Píše to

11> VIP.cpp

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(29): warning C4804: '>=' : unsafe use of type 'bool' in operation

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(52): error C2046: illegal case

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(58): error C2059: syntax error : 'case'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(59): error C2059: syntax error : 'if'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(61): error C2059: syntax error : 'else'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(63): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(63): error C2143: syntax error : missing ';' before '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(63): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(64): error C2143: syntax error : missing ';' before '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(64): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(66): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(66): error C2143: syntax error : missing ';' before '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(66): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(68): error C2059: syntax error : 'public'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(69): error C2143: syntax error : missing ';' before '{'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(69): error C2447: '{' : missing function header (old-style formal list?)

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(77): error C2653: 'vip_npc' : is not a class or namespace name

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(98): error C2653: 'vip_npc' : is not a class or namespace name

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(143): error C2043: illegal break

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(145): error C2046: illegal case

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(157): error C2043: illegal break

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(159): error C2059: syntax error : 'return'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(161): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(161): error C2143: syntax error : missing ';' before '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(161): error C2059: syntax error : '}'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(164): error C2143: syntax error : missing ';' before '{'

11>C:\Users\Tony\Desktop\Kraviny\Trinitycore b10866 for 335a\src\server\scripts\Custom\VIP.cpp(164): error C2447: '{' : missing function header (old-style formal list?)

 

 

Share this post


Link to post
Share on other sites

Kouknul jsem se na to.. :D

#include "ScriptPCH.h"

//VIP NPC, coded by minig
//OH $#!T - Repaired by Wolf Officious 

#define VIP_NPC_TEXT_MONEYERR       "Nedostatek penez!"

#define VIP_NPC_TEXT_RENAME         "Nove jmeno si nastavis po relogu"
#define VIP_NPC_TEXT_FACTIONCHANGE  "Novou rasu u druhe frakce si zvolis pri relogu"
#define VIP_NPC_TEXT_RACECHANGE     "Novou rasu si zvolis pri relogu."
#define VIP_NPC_TEXT_CUSTOMIZE      "Novy vzhled si nastavis pri relogu."

class vip_npc : public CreatureScript
{
private:

   enum vipPayPrices
   {
       PRICE_RENAME        = 1,    // Rename price
       PRICE_FACTIONCHANGE = 1,    // Factionchange price
       PRICE_RACECHANGE    = 1,    // RaceChange price
       PRICE_CUSTOMIZE     = 1     // Customize price
   };

   bool vip_pay(vipPayPrices price, Player * player)
   {
       if(player->GetMoney() < uint32(price))
           return false;

       player->ModifyMoney( - int32(price) );
       return true;
   }

public:
   vip_npc() : CreatureScript("vip_npc") {}

   bool OnGossipHello(Player *player, Creature *npc)
   {
       if(player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           npc->MonsterWhisper("Jsi v combatu!", player->GetGUID());
           return true;
       }

       player->ADD_GOSSIP_ITEM( 6, "Rename",           GOSSIP_SENDER_MAIN, 1);
       player->ADD_GOSSIP_ITEM( 6, "Zmena vzhledu",    GOSSIP_SENDER_MAIN, 2);
       player->ADD_GOSSIP_ITEM( 6, "Zmena rasy",       GOSSIP_SENDER_MAIN, 3);
       player->ADD_GOSSIP_ITEM( 6, "Zmena frakce",     GOSSIP_SENDER_MAIN, 4);
       player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
       return true;
   }

   bool OnGossipSelect(Player *player, Creature *npc, uint32 sender, uint32 uiAction)
   {
       if(player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           npc->MonsterWhisper("Jsi v combatu!", player->GetGUID());
           return true;
       }

       if(sender != GOSSIP_SENDER_MAIN)
       {
           player->CLOSE_GOSSIP_MENU();
           return true;
       }

       //player->PlayerTalkClass->ClearMenus(); // při potížích povolit

       switch(uiAction)
       {
       case 1: //Rename 
           if(vip_pay(PRICE_RENAME, player))
           {
               player->CLOSE_GOSSIP_MENU();
               player->SetAtLoginFlag(AT_LOGIN_RENAME);
               npc->MonsterWhisper(VIP_NPC_TEXT_RENAME, player->GetGUID());
               return true;
           }
           break;

       case 2: //Customize
           if(vip_pay(PRICE_CUSTOMIZE, player))
           {
               player->CLOSE_GOSSIP_MENU();
               player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
               npc->MonsterWhisper(VIP_NPC_TEXT_CUSTOMIZE, player->GetGUID());
               return true;
           }
           break;

       case 3: //Race Change
           if(vip_pay(PRICE_RACECHANGE, player))
           {
               player->CLOSE_GOSSIP_MENU();
               player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
               npc->MonsterWhisper(VIP_NPC_TEXT_RACECHANGE, player->GetGUID());
               return true;
           }
           break;

       case 4: //Faction Change
           if(vip_pay(PRICE_FACTIONCHANGE, player))
           {
               player->CLOSE_GOSSIP_MENU();
               player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
               npc->MonsterWhisper(VIP_NPC_TEXT_FACTIONCHANGE, player->GetGUID());
               return true;
           }
           break;

       default:
           player->CLOSE_GOSSIP_MENU();
           return true;
       }

       player->CLOSE_GOSSIP_MENU();
       npc->MonsterWhisper(VIP_NPC_TEXT_MONEYERR, player->GetGUID());

       return true;
   }
};

void AddScVIP()
{
   new vip_npc();
}

 

 

EDIT: odstraněn zbytčený switch a jeden enum (vipPayTypes)..

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Vždycky v cooperech, pokud se to nenásobí.. a tady se to nenásobí.

 

EDIT: ty ceny se nastavujou v enum vipPayPrices, to je snad jasně vidět.. :D

EDIT2: ještě jsem to trochu upravil.. :P

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×