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:  
minig

[C++] Barber

Recommended Posts

Zdravím uživatele wowresource,

 

Jak všichni víme, jednou z vymožeností, které přinesl datadisk Wrath of the Lich King, byl Barber. To znamená ingame úprava vzhledu vaší postavy.

 

To ovšem neznamená, že toto nejde v TBC. Stačí na to pouhý gossip. Viz kód níže.

 

Co tento gossip umí? Umí změnit sestřih, barvu vlasů, nebo vousy(popřípadě náušnice, kly atd., podle rasy)

 

Takže tedy kód:

 

 

 

#include "ScriptPCH.h"

uint32 hair_type;
uint32 hair_color;
uint32 xicht;

struct maxStyles
{
unsigned short maxMale;
unsigned short maxFemale;
};

maxStyles maxHairStyles[MAX_RACES] =
{
   {0,0},  //                        0
   {11,18},// RACE_HUMAN           = 1,
   {6,6},  //  RACE_ORC            = 2,
   {10,13},// RACE_DWARF           = 3,
   {6,6},  // RACE_NIGHTELF        = 4,
   {10,9}, // RACE_UNDEAD_PLAYER   = 5,
   {7,6},  //  RACE_TAUREN         = 6,
   {6,6},  // RACE_GNOME           = 7,
   {5,4},  // RACE_TROLL           = 8,
   {0,0},  // RACE_GOBLIN          = 9,
   {9,13}, //  RACE_BLOODELF       = 10,
   {7,10}, //  RACE_DRAENEI        = 11
};

uint8 maxHairColor[MAX_RACES] =
{
   0,  //                        0
   9,  // RACE_HUMAN           = 1,
   7,  //  RACE_ORC            = 2,
   9,  // RACE_DWARF           = 3,
   7,  // RACE_NIGHTELF        = 4,
   9,  // RACE_UNDEAD_PLAYER   = 5,
   2,  //  RACE_TAUREN         = 6,
   8,  // RACE_GNOME           = 7,
   9,  // RACE_TROLL           = 8,
   0,  // RACE_GOBLIN          = 9,
   9,  //  RACE_BLOODELF       = 10,
   6,  //  RACE_DRAENEI        = 11
};

maxStyles maxFacialFeatures[MAX_RACES] =
{
   {0,0},  //                        0
   {8,6},  // RACE_HUMAN           = 1,
   {10,6}, // RACE_ORC             = 2,
   {10,5}, // RACE_DWARF           = 3,
   {5,9},  // RACE_NIGHTELF        = 4,
   {16,7}, // RACE_UNDEAD_PLAYER   = 5,
   {6,4},  // RACE_TAUREN          = 6,
   {7,6},  // RACE_GNOME           = 7,
   {10,5}, // RACE_TROLL           = 8,
   {0,0},  // RACE_GOBLIN          = 9,
   {10,9}, // RACE_BLOODELF        = 10,
   {7,6},  // RACE_DRAENEI         = 11
};

void update(Player *player)
{
 player->SendUpdateToPlayer(player);
 WorldPacket data(SMSG_FORCE_DISPLAY_UPDATE, 8);
 data << player->GetGUID();
 player->SendMessageToSet(&data,true);
}

void change_hair(Player *player, short change)
{
int max;
switch(player->getGender())
{
case GENDER_FEMALE:
	max = maxHairStyles[player->getRace()].maxFemale;
	break;
case GENDER_MALE:
	max = maxHairStyles[player->getRace()].maxMale;
	break;
}

int current = player->GetByteValue(PLAYER_BYTES, 2);
current += change;

if(current < 0)
	current = max;
if(current > max)
	current = 0;

player->SetByteValue(PLAYER_BYTES, 2, current);
update(player);
}

void change_color(Player *player, short change)
{
int max = maxHairColor[player->getRace()];
int current = player->GetByteValue(PLAYER_BYTES, 3);

current += change;

if ( current < 0 )
       current = max;
if ( current > max )
       current = 0;

player->SetByteValue(PLAYER_BYTES, 3, current);
update(player);
}

void change_xicht(Player *player, short change)
{
int max;

switch(player->getGender())
{
case GENDER_MALE:
	max = maxFacialFeatures[player->getRace()].maxMale;
	break;
case GENDER_FEMALE:
	max = maxFacialFeatures[player->getRace()].maxFemale;
	break;
}

int current = player->GetByteValue(PLAYER_BYTES_2, 0);
current += change;

if ( current < 0 )
       current = max;
if ( current > max )
       current = 0;

player->SetByteValue(PLAYER_BYTES_2, 0, current);
update(player);
}

void menu(short num, Player *player, Creature *npc) //Zobrazi menu na zaklade vlozeneho id(num)
{
switch(num)
{
case 0: //hlavni menu
	player->PlayerTalkClass->ClearMenus();
	player->ADD_GOSSIP_ITEM(7, "Chci ostrihat", GOSSIP_SENDER_MAIN, 1);
	player->ADD_GOSSIP_ITEM(7, "Chci nabarvit vlasy", GOSSIP_SENDER_MAIN, 2);
	player->ADD_GOSSIP_ITEM(7, "Chci upravit oblicej", GOSSIP_SENDER_MAIN, 3);
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
	break;
case 1: //menu strihano
	player->PlayerTalkClass->ClearMenus();
	player->ADD_GOSSIP_ITEM(10, "Dalsi", GOSSIP_SENDER_MAIN, 4);
	player->ADD_GOSSIP_ITEM(10, "Predchozi", GOSSIP_SENDER_MAIN, 5);
	player->ADD_GOSSIP_ITEM(5, "Vratit zmeny", GOSSIP_SENDER_MAIN, 100);
	player->ADD_GOSSIP_ITEM(5, "Hotovo", GOSSIP_SENDER_MAIN, 101);
	player->ADD_GOSSIP_ITEM(7, "Zpet do hlavniho menu", GOSSIP_SENDER_MAIN, 0);
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
	break;
case 2: //menu zmeny barvy
	player->PlayerTalkClass->ClearMenus();
	player->ADD_GOSSIP_ITEM(10, "Dalsi", GOSSIP_SENDER_MAIN, 6);
	player->ADD_GOSSIP_ITEM(10, "Predchozi", GOSSIP_SENDER_MAIN, 7);
	player->ADD_GOSSIP_ITEM(5, "Vratit zmeny", GOSSIP_SENDER_MAIN, 100);
	player->ADD_GOSSIP_ITEM(5, "Hotovo", GOSSIP_SENDER_MAIN, 101);
	player->ADD_GOSSIP_ITEM(7, "Zpet do hlavniho menu", GOSSIP_SENDER_MAIN, 0);
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
	break;
case 3: //menu zmeny obliceje
	player->PlayerTalkClass->ClearMenus();
	player->ADD_GOSSIP_ITEM(10, "Dalsi", GOSSIP_SENDER_MAIN, 8);
	player->ADD_GOSSIP_ITEM(10, "Predchozi", GOSSIP_SENDER_MAIN, 9);
	player->ADD_GOSSIP_ITEM(5, "Vratit zmeny", GOSSIP_SENDER_MAIN, 100);
	player->ADD_GOSSIP_ITEM(5, "Hotovo", GOSSIP_SENDER_MAIN, 101);
	player->ADD_GOSSIP_ITEM(7, "Zpet do hlavniho menu", GOSSIP_SENDER_MAIN, 0);
	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
	break;
}
}

bool hello(Player *player, Creature *npc)
{
//backup vzhledu hrace, pro pripad resetu vzhledu
hair_type = player->GetByteValue(PLAYER_BYTES, 2);
hair_color = player->GetByteValue(PLAYER_BYTES, 3);
xicht = player->GetByteValue(PLAYER_BYTES_2, 0);

menu(0, player, npc);
return true;
}

bool select(Player * player, Creature *npc, uint32 sender, uint32 action)
{
switch(action)
{
/*
#######################
#####Polozky menu######
#######################
*/
case 0: //z5 do menu...
	menu(0, player, npc);
	break;
case 1: //strihani
	menu(1, player, npc);
	break;
case 2: //barva
	menu(2, player, npc);
	break;
case 3: //oblicej
	menu(3, player, npc);
	break;
/*
#########################
########Cinnosti#########
#########################
*/
case 4: //dalsi vlasy
	change_hair(player, 1);
	menu(1, player, npc);
	break;
case 5: //predchozi vlasy
	change_hair(player, -1);
	menu(1, player, npc);
	break;
case 6: //dalsi barva
	change_color(player, 1);
	menu(2, player, npc);
	break;
case 7: //predchozi barva
	change_color(player, -1);
	menu(2, player, npc);
	break;
case 8: //dalsi oblicej
	change_xicht(player, 1);
	menu(3, player, npc);
	break;
case 9: //predchozi oblicej
	change_xicht(player, -1);
	menu(3, player, npc);
	break;
case 100: //vratit zmeny
	player->SetByteValue(PLAYER_BYTES, 2, hair_type);
	player->SetByteValue(PLAYER_BYTES, 3, hair_color);
	player->SetByteValue(PLAYER_BYTES_2, 0, xicht);
	update(player);
	menu(0, player, npc);
	break;
case 101: //hotovo
	player->CLOSE_GOSSIP_MENU();
	break;
}
return true;
}

void AddSC_barber()
{
Script *newscript;
newscript = new Script;
newscript->Name="barber";
newscript->pGossipHello = &hello;
newscript->pGossipSelect = &select;
newscript->RegisterSelf();
}

 

 

  • Upvote 3

Share this post


Link to post
Share on other sites

Eh.. Soráč, ale bylo by dobrý uvést zdroj. Je to klasika, až na to, že je to "přeložený". Ale jinak na klid (zkoušet nebudu). :D

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Eh.. Soráč, ale bylo by dobrý uvést zdroj. Je to klasika, až na to, že je to "přeložený". Ale jinak na klid (zkoušet nebudu). :D

 

no, je pravda, že jsem se koukal na Oregon fórum, na základy funkčnosti datafield u characters, ale jinak jsem to psal celý já... klidně zkus najít identický kód...

Share this post


Link to post
Share on other sites

Identický asi né, ale je slušnost hodit link na to, z čeho jsi vycházel. Je to ono, že? http://www.oregoncore.com/index.php/topic/1612-barber-shop

 

Hele, nemam ti to za zlý, vždyť neni, co. :) Já to mám taky upravený. :D

 

 

/*******************************************************
* File:'barber.cpp'
* ScriptName:'barber'
*******************************************************/

#include "ScriptPCH.h"

typedef struct maxStyles_struct {
   uint8 maxMale;
   uint8 maxFemale;
} maxStyles_t;

maxStyles_t maxHairStyles[MAX_RACES] =
{
   {0,0},  //                        0
   {11,18},// RACE_HUMAN           = 1,
   {6,6},  // RACE_ORC             = 2,
   {10,13},// RACE_DWARF           = 3,
   {6,6},  // RACE_NIGHTELF        = 4,
   {10,9}, // RACE_UNDEAD_PLAYER   = 5,
   {7,6},  // RACE_TAUREN          = 6,
   {6,6},  // RACE_GNOME           = 7,
   {5,4},  // RACE_TROLL           = 8,
   {0,0},  // RACE_GOBLIN          = 9,
   {9,13}, // RACE_BLOODELF        = 10,
   {7,10}, // RACE_DRAENEI         = 11
};

uint8 maxHairColor[MAX_RACES] =
{
   0,  //                            0
   9,  // RACE_HUMAN               = 1,
   7,  // RACE_ORC                 = 2,
   9,  // RACE_DWARF               = 3,
   7,  // RACE_NIGHTELF            = 4,
   9,  // RACE_UNDEAD_PLAYER       = 5,
   2,  // RACE_TAUREN              = 6,
   8,  // RACE_GNOME               = 7,
   9,  // RACE_TROLL               = 8,
   0,  // RACE_GOBLIN              = 9,
   9,  // RACE_BLOODELF            = 10,
   6,  // RACE_DRAENEI             = 11
};

maxStyles_t maxFacialFeatures[MAX_RACES] =
{
   {0,0},  //                        0
   {8,6},  // RACE_HUMAN           = 1,
   {10,6}, // RACE_ORC             = 2,
   {10,5}, // RACE_DWARF           = 3,
   {5,9},  // RACE_NIGHTELF        = 4,
   {16,7}, // RACE_UNDEAD_PLAYER   = 5,
   {6,4},  // RACE_TAUREN          = 6,
   {7,6},  // RACE_GNOME           = 7,
   {10,5}, // RACE_TROLL           = 8,
   {0,0},  // RACE_GOBLIN          = 9,
   {10,9}, // RACE_BLOODELF        = 10,
   {7,6},  // RACE_DRAENEI         = 11
};

// FCE PROTOTYPES
inline bool PlayerSitting(Player *player);
inline void ChangeEffect (Player *player);
void SelectHairStyle     (Player *player, int change);
void SelectHairColor     (Player *player, int change);
void SelectFacialFeature (Player *player, int change);
std::string GetHairStyleGossipMsg(Player *player);
std::string GetHairColorGossipMsg(Player *player);
std::string GetFeatureGossipMsg  (Player *player);

// DEFINITIONS
#define GOSSIP_SENDER_OPTION 50
#define GOSSIP_SENDER_SUBOPTION 51

/******************/
/* AUXILIARY FCES */
/******************/
inline bool PlayerSitting(Player *player)
{
   uint8 standState = player->getStandState();
   if(player->IsStandState() || standState == UNIT_STAND_STATE_SIT || standState == UNIT_STAND_STATE_SLEEP || standState == UNIT_STAND_STATE_KNEEL)
   {
       return false;
   }
   return true;
}

inline void ChangeEffect(Player *player)
{
   player->SendUpdateToPlayer(player);
   WorldPacket data(SMSG_FORCE_DISPLAY_UPDATE, 8);
   data << player->GetGUID();
   player->SendMessageToSet(&data, true);
}

void SelectHairStyle(Player *player, int change)
{
   uint8 max=maxHairStyles[player->getRace()].maxMale;
   if(player->getGender() == GENDER_FEMALE)
       max=maxHairStyles[player->getRace()].maxFemale;

   int current = player->GetByteValue(PLAYER_BYTES, 2);

   current += change;

   if(current > max)
       current = 0;
   else if(current < 0)
       current = max;

   player->SetByteValue(PLAYER_BYTES, 2, current);
   ChangeEffect(player);
}

void SelectHairColor(Player *player, int change)
{
   uint8 max=maxHairColor[player->getRace()];
   int current = player->GetByteValue(PLAYER_BYTES, 3);

   current += change;

   if(current > max)
       current = 0;
   else if(current < 0)
       current = max;

   player->SetByteValue(PLAYER_BYTES, 3, current);
   ChangeEffect(player);
}

void SelectFacialFeature(Player *player, int change)
{
   uint8 max=maxFacialFeatures[player->getRace()].maxMale;
   if(player->getGender() == GENDER_FEMALE)
       max=maxFacialFeatures[player->getRace()].maxFemale;

   int current = player->GetByteValue(PLAYER_BYTES_2, 0); 

   current += change;

   if(current > max)
       current = 0;
   else if(current < 0)
       current = max;

   player->SetByteValue(PLAYER_BYTES_2, 0, current);
   ChangeEffect(player);
}

std::string GetHairStyleGossipMsg(Player *player)
{
   if(player->getRace() == RACE_TAUREN)
       return "Zmenit styl rohu..";
   else
       return "Zmenit uces..";
}

std::string GetHairColorGossipMsg(Player *player)
{
   if(player->getRace() == RACE_TAUREN)
       return "Zmenit barvu rohu..";
   else
       return "Zmenit barvu vlasu..";
}

std::string GetFeatureGossipMsg(Player *player)
{
   uint8 pRace   = player->getRace();
   uint8 pGender = player->getGender();

   if(pGender == GENDER_FEMALE)
   {
       if(pRace == RACE_HUMAN || pRace == RACE_ORC || pRace == RACE_DWARF || pRace == RACE_GNOME || pRace == RACE_BLOODELF)
           return "Zmenit nausnice..";

       if(pRace == RACE_NIGHTELF)
           return "Zmenit tetovani obliceje..";

       if(pRace == RACE_TAUREN)
           return "Zmenit vlasy..";

       if(pRace == RACE_DRAENEI)
           return "Zmenit rohy..";
   }

   if(pRace == RACE_TROLL)
       return "Zmenit kly..";

   if(pRace == RACE_UNDEAD_PLAYER)
       return "Zmenit doplnky obliceje..";

   return "Zmenit vousy..";
}

/********************/
/* MAIN SCRIPT FCES */
/********************/
bool GossipHello_barber(Player *player, Creature *creature)
{
   int32 text = 0;

   creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);

   if(!PlayerSitting(player))
   {
       if(player->getGender() == GENDER_MALE)
           creature->Whisper("Pane, posadte se prosim.", player->GetGUID());
       else if(player->getGender() == GENDER_FEMALE)
           creature->Whisper("Oh, slecno, sednete si prosim. ", player->GetGUID());

       player->GetSession()->SendNotification("Musite se posadit na zidli..");
       return true;
   }

   if(player->isInCombat())
   {
       if(player->getGender() == GENDER_MALE)
           creature->Whisper("Pane, obavam se ze prave bojujete! BEZTE PROSIM PRYC! POMOOOC!! >", player->GetGUID());
       else if(player->getGender() == GENDER_FEMALE)
           creature->Whisper("Pani, obavam se ze prave bojujete! BEZTE PROSIM PRYC! POMOOOC!! >", player->GetGUID());

       player->GetSession()->SendNotification("Jsi v Combatu!");
       return true;
   }

   creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, 94);

   switch(player->getRace())
   {
       case RACE_HUMAN:
           text = player->getGender() == GENDER_FEMALE ? 50013 : 50012;
           break;
       case RACE_ORC:
           text = player->getGender() == GENDER_FEMALE ? 50002 : 50001;
           break;
       case RACE_DWARF:
           text = player->getGender() == GENDER_FEMALE ? 50015 : 50014;
           break;
       case RACE_NIGHTELF:
           text = player->getGender() == GENDER_FEMALE ? 50019 : 50018;
           break;
       case RACE_UNDEAD_PLAYER:
           text = player->getGender() == GENDER_FEMALE ? 50008 : 50007;
           break;
       case RACE_TAUREN:
           text = player->getGender() == GENDER_FEMALE ? 50006 : 50005;
           break;
       case RACE_GNOME:
           text = player->getGender() == GENDER_FEMALE ? 50017 : 50016;
           break;        
       case RACE_DRAENEI:
           text = player->getGender() == GENDER_FEMALE ? 50021 : 50020;
           break;
       case RACE_TROLL:
           text = player->getGender() == GENDER_FEMALE ? 50004 : 50003;
           break;
       case RACE_BLOODELF:
           text = player->getGender() == GENDER_FEMALE ? 50010 : 50009;
           break;
       default:
           break;
   }

   if(PlayerSitting(player))
   {
       if(!player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM))
           player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM);

       player->ADD_GOSSIP_ITEM( 0, GetHairStyleGossipMsg(player).c_str(),  GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
       player->ADD_GOSSIP_ITEM( 0, GetHairColorGossipMsg(player).c_str(),  GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
       player->ADD_GOSSIP_ITEM( 0, GetFeatureGossipMsg(player).c_str(),    GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
       player->SEND_GOSSIP_MENU(text, creature->GetGUID());
       creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
       return true;
   }
   else
   {
       player->CLOSE_GOSSIP_MENU();
       return true;
   }
}

bool GossipSelect_barber(Player *player, Creature *creature, uint32 sender, uint32 action)
{
   switch(action)
   {
   case GOSSIP_ACTION_INFO_DEF+1:   
       player->ADD_GOSSIP_ITEM( 0, GetHairStyleGossipMsg(player).c_str(),  GOSSIP_SENDER_MAIN,   GOSSIP_ACTION_INFO_DEF + 2);
       player->ADD_GOSSIP_ITEM( 0, GetHairColorGossipMsg(player).c_str(),  GOSSIP_SENDER_MAIN,   GOSSIP_ACTION_INFO_DEF + 4);
       player->ADD_GOSSIP_ITEM( 0, GetFeatureGossipMsg(player).c_str(),    GOSSIP_SENDER_OPTION, GOSSIP_ACTION_INFO_DEF + 6);
       player->SEND_GOSSIP_MENU(50023, creature->GetGUID());
       break;

   // HAIR/HORN STYLE
   case GOSSIP_ACTION_INFO_DEF+2: // next
       if(sender == GOSSIP_SENDER_SUBOPTION)
           SelectHairStyle(player,1);

   case GOSSIP_ACTION_INFO_DEF+3: // previous
       if(action == GOSSIP_ACTION_INFO_DEF+3 && sender == GOSSIP_SENDER_SUBOPTION)
           SelectHairStyle(player,-1);

       // options
       player->ADD_GOSSIP_ITEM( 0, "Dalsi >",      GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 2);
       player->ADD_GOSSIP_ITEM( 0, "Predchozi <",  GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 3);
       player->ADD_GOSSIP_ITEM( 0, "TO BERU!",     GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 1);
       player->SEND_GOSSIP_MENU(50024, creature->GetGUID());
       break;

   // HAIR COLOR
   case GOSSIP_ACTION_INFO_DEF+4: // next
       if(sender == GOSSIP_SENDER_SUBOPTION)
           SelectHairColor(player,1);

   case GOSSIP_ACTION_INFO_DEF+5: // previous
       if(action == GOSSIP_ACTION_INFO_DEF+5 && sender == GOSSIP_SENDER_SUBOPTION)
           SelectHairColor(player,-1);                                     

       // options
       player->ADD_GOSSIP_ITEM( 0, "Dalsi >",      GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 4);
       player->ADD_GOSSIP_ITEM( 0, "Predchozi <",  GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 5);
       player->ADD_GOSSIP_ITEM( 0, "TO BERU!",     GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 1);
       player->SEND_GOSSIP_MENU(50024, creature->GetGUID());
       break;

       // FACIAL FEATURE
   case GOSSIP_ACTION_INFO_DEF+6: // next
       if(sender == GOSSIP_SENDER_SUBOPTION)
           SelectFacialFeature(player,1);

   case GOSSIP_ACTION_INFO_DEF+7: // previous
       if(action == GOSSIP_ACTION_INFO_DEF+7 && sender == GOSSIP_SENDER_SUBOPTION)
           SelectFacialFeature(player,-1);

       // options
       player->ADD_GOSSIP_ITEM( 0, "Dalsi >",      GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 6);
       player->ADD_GOSSIP_ITEM( 0, "Predchozi <",  GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 7);
       player->ADD_GOSSIP_ITEM( 0, "TO BERU!",     GOSSIP_SENDER_SUBOPTION, GOSSIP_ACTION_INFO_DEF + 1);
       player->SEND_GOSSIP_MENU(50024, creature->GetGUID());
       break;

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

void AddSC_barber()
{
   Script *newscript;

   newscript = new Script;
   newscript->Name = "barber";
   newscript->pGossipHello  = &GossipHello_barber;
   newscript->pGossipSelect = &GossipSelect_barber;
   newscript->RegisterSelf();
}

 

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Výborná vecička, no mám jednu otázku.Ako som na pár serveroch videl tak ku každému NPC musela byť aj stolička(chair).Bez toho aby si hráč sadol do stoličky ho to neošorilo, je to potrebné aj v tomto prípade ?

Share this post


Link to post
Share on other sites

Výborná vecička, no mám jednu otázku.Ako som na pár serveroch videl tak ku každému NPC musela byť aj stolička(chair).Bez toho aby si hráč sadol do stoličky ho to neošorilo, je to potrebné aj v tomto prípade ?

U toho scriptu, kterej jsem postnul já to nutnost je. :D Stačí jakákoliv židle, je to fuk.

Minig tam tu "sedící" podmínku nemá. Alespoň jsem jí tam nikde nezahlídnul.

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


×