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  
F0rM1s

Přeskriptování

Recommended Posts

Dobry den našel by se tu nějaky hodny člověk na přeskriptování toho to scriptu ?

je to gh system :)

 

#include "ScriptedPch.h"

//extern DatabaseMysql SD2Database;

extern DatabaseType WorldDatabase;

#define MSG_GOSSIP_TELE          "Teleport do vaseho Guild Housu"
#define MSG_GOSSIP_BUY           "Koupit Guild House(1000 gold)"
#define MSG_GOSSIP_SELL          "Prodat Guild House (500 gold)"
#define MSG_GOSSIP_NEXTPAGE      "Dalsi Stranka -->"
#define MSG_INCOMBAT             "¨Jsi v Combatu!"
#define MSG_NOGUILDHOUSE         "Vase Guilda nema Guild House!"
#define MSG_NOFREEGH             "Strpeni prosim, Vsechny guild housy jsou plne."
#define MSG_ALREADYHAVEGH        "Prominte, Ale uz mate Guild House (%s)."
#define MSG_NOTENOUGHMONEY       "Nemate Penize. Musite mit %u goldu ke koupeni Guild Housu."
#define MSG_GHOCCUPIED           "Omlouvame se, ale tento Guild House se jiz pouziva."
#define MSG_CONGRATULATIONS      "Gratulujeme! Koupili jste si Guild House!"
#define MSG_SOLD                 "Prodal jste Guild House. Tady je %u goldu."
#define MSG_NOTINGUILD           "Nejste v Guilde. Pripojte se nebo udelejte guildu."

#define CODE_SELL                "Prodat"
#define MSG_CODEBOX_SELL         "Vlozte \"" CODE_SELL "\" Pokud chcete opravdu Guild House prodat. Upozorneni ! : Dostanete jen 50 % hodnoty Gh !"

#define OFFSET_GH_ID_TO_ACTION   1500
#define OFFSET_SHOWBUY_FROM      10000

#define ACTION_TELE              1001
#define ACTION_SHOW_BUYLIST      1002  //deprecated. Use (OFFSET_SHOWBUY_FROM + 0) instead
#define ACTION_SELL_GUILDHOUSE   1003

#define ICON_GOSSIP_BALOON       0
#define ICON_GOSSIP_WING         2
#define ICON_GOSSIP_BOOK         3
#define ICON_GOSSIP_WHEEL1       4
#define ICON_GOSSIP_WHEEL2       5
#define ICON_GOSSIP_GOLD         6
#define ICON_GOSSIP_BALOONDOTS   7
#define ICON_GOSSIP_TABARD       8
#define ICON_GOSSIP_XSWORDS      9

#define COST_GH_BUY              900000000  //1000 g.
#define COST_GH_SELL             450000000   //500 g.

#define GOSSIP_COUNT_MAX         10

bool isPlayerGuildLeader(Player *player)
{
return (player->GetRank() == 0) && (player->GetGuildId() != 0);
}

bool getGuildHouseCoords(uint32 guildId, float &x, float &y, float &z, uint32 &map)
{
if (guildId == 0)
{
	//if player has no guild
	return false;
}

QueryResult_AutoPtr result;
result = WorldDatabase.PQuery("SELECT `x`, `y`, `z`, `map` FROM `guildhouses` WHERE `guildId` = %u", guildId);
if(result)
{
	Field *fields = result->Fetch();
	x = fields[0].GetFloat();
	y = fields[1].GetFloat();
	z = fields[2].GetFloat();
	map = fields[3].GetUInt32();
	return true;
}
return false;
}

void teleportPlayerToGuildHouse(Player *player, Creature *_creature)
{
if (player->GetGuildId() == 0)
{
	//if player has no guild
	_creature->MonsterWhisper(MSG_NOTINGUILD, player->GetGUID());
	return;
}

if (!player->getAttackers().empty())
{
	//if player in combat
	_creature->MonsterSay(MSG_INCOMBAT, LANG_UNIVERSAL, player->GetGUID());
	return;
}

float x, y, z;
uint32 map;

if (getGuildHouseCoords(player->GetGuildId(), x, y, z, map))
{
	//teleport player to the specified location
	player->TeleportTo(map, x, y, z, 0.0f);
}
else
	_creature->MonsterWhisper(MSG_NOGUILDHOUSE, player->GetGUID());

}

bool showBuyList(Player *player, Creature *_creature, uint32 showFromId = 0)
{
//show not occupied guildhouses

QueryResult_AutoPtr result;
result = WorldDatabase.PQuery("SELECT `id`, `comment` FROM `guildhouses` WHERE `guildId` = 0 AND `id` > %u ORDER BY `id` ASC LIMIT %u",
	showFromId, GOSSIP_COUNT_MAX);

if (result)
{
	uint32 guildhouseId = 0;
	std::string comment = "";
	do
	{

		Field *fields = result->Fetch();

		guildhouseId = fields[0].GetInt32();
		comment = fields[1].GetString();

		//send comment as a gossip item
		//transmit guildhouseId in Action variable
		player->ADD_GOSSIP_ITEM(ICON_GOSSIP_TABARD, comment, GOSSIP_SENDER_MAIN,
			guildhouseId + OFFSET_GH_ID_TO_ACTION);

	} while (result->NextRow());

	if (result->GetRowCount() == GOSSIP_COUNT_MAX)
	{
		//assume that we have additional page
		//add link to next GOSSIP_COUNT_MAX items
		player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOONDOTS, MSG_GOSSIP_NEXTPAGE, GOSSIP_SENDER_MAIN, 
			guildhouseId + OFFSET_SHOWBUY_FROM);
	}


	player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());

	return true;
} else
{
	if (showFromId = 0)
	{
		//all guildhouses are occupied
		_creature->MonsterWhisper(MSG_NOFREEGH, player->GetGUID());
		player->CLOSE_GOSSIP_MENU();
	} else
	{
		//this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
		//just show GHs from beginning
		showBuyList(player, _creature, 0);
	}
}

return false;
}

bool isPlayerHasGuildhouse(Player *player, Creature *_creature, bool whisper = false)
{

QueryResult_AutoPtr result;

result = WorldDatabase.PQuery("SELECT `comment` FROM `guildhouses` WHERE `guildId` = %u",
	player->GetGuildId());

if (result)
{
	if (whisper)
	{
		//whisper to player "already have etc..."
		Field *fields = result->Fetch();
		char msg[100];
		sprintf(msg, MSG_ALREADYHAVEGH, fields[0].GetString());
		_creature->MonsterWhisper(msg, player->GetGUID());
	}

	return true;
}
return false;

}

void buyGuildhouse(Player *player, Creature *_creature, uint32 guildhouseId)
{
if (player->GetMoney() < COST_GH_BUY)
{
	//show how much money player need to buy GH (in gold)
	char msg[100];
	sprintf(msg, MSG_NOTENOUGHMONEY, COST_GH_BUY / 10000);
	_creature->MonsterWhisper(msg, player->GetGUID());
	return;
}

if (isPlayerHasGuildhouse(player, _creature, true))
{
	//player already have GH
	return;
}

QueryResult_AutoPtr result;

//check if somebody already occupied this GH
result = WorldDatabase.PQuery("SELECT `id` FROM `guildhouses` WHERE `id` = %u AND `guildId` <> 0",
	guildhouseId);

if (result)
{
	_creature->MonsterWhisper(MSG_GHOCCUPIED, player->GetGUID());
	return;
}

//update DB
result = WorldDatabase.PQuery("UPDATE `guildhouses` SET `guildId` = %u WHERE `id` = %u",
	player->GetGuildId(), guildhouseId);

if (result)

player->ModifyMoney(-COST_GH_BUY);
_creature->MonsterSay(MSG_CONGRATULATIONS, LANG_UNIVERSAL, player->GetGUID());

}

void sellGuildhouse(Player *player, Creature *_creature)
{
if (isPlayerHasGuildhouse(player, _creature))
{
	QueryResult_AutoPtr result;

	result = WorldDatabase.PQuery("UPDATE `guildhouses` SET `guildId` = 0 WHERE `guildId` = %u",
	player->GetGuildId());

	if (result)

	player->ModifyMoney(COST_GH_SELL);

	//display message e.g. "here your money etc."
	char msg[100];
	sprintf(msg, MSG_SOLD, COST_GH_SELL / 10000);
	_creature->MonsterWhisper(msg, player->GetGUID());
}
}

bool GossipHello_guildmaster(Player *player, Creature *_creature)
{
player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOON, MSG_GOSSIP_TELE, 
	GOSSIP_SENDER_MAIN, ACTION_TELE);

if (isPlayerGuildLeader(player))
{
	//show additional menu for guild leader
	player->ADD_GOSSIP_ITEM(ICON_GOSSIP_GOLD, MSG_GOSSIP_BUY,
		GOSSIP_SENDER_MAIN, ACTION_SHOW_BUYLIST);
	if (isPlayerHasGuildhouse(player, _creature))
	{
		//and additional for guildhouse owner
		player->PlayerTalkClass->GetGossipMenu().AddMenuItem(ICON_GOSSIP_GOLD, MSG_GOSSIP_SELL, GOSSIP_SENDER_MAIN, ACTION_SELL_GUILDHOUSE, MSG_CODEBOX_SELL, 0, true);
	}
}
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
return true;
}


bool GossipSelect_guildmaster(Player *player, Creature *_creature, uint32 sender, uint32 action )
{
if (sender != GOSSIP_SENDER_MAIN)
	return false;

switch (action)
{
	case ACTION_TELE:
		//teleport player to GH
		player->CLOSE_GOSSIP_MENU();
		teleportPlayerToGuildHouse(player, _creature);
		break;
	case ACTION_SHOW_BUYLIST:
		//show list of GHs which currently not occupied
		showBuyList(player, _creature);
		break;
	default:
		if (action > OFFSET_SHOWBUY_FROM)
		{
			showBuyList(player, _creature, action - OFFSET_SHOWBUY_FROM);
		} else if (action > OFFSET_GH_ID_TO_ACTION)
		{
			//player clicked on buy list
			player->CLOSE_GOSSIP_MENU();
			//get guildhouseId from action
			//guildhouseId = action - OFFSET_GH_ID_TO_ACTION
			buyGuildhouse(player, _creature, action - OFFSET_GH_ID_TO_ACTION);
		}
		break;
}

return true;
}

bool GossipSelectWithCode_guildmaster( Player *player, Creature *_creature,
								  uint32 sender, uint32 action, const char* sCode )
{
   if(sender == GOSSIP_SENDER_MAIN)
   {
       if(action == ACTION_SELL_GUILDHOUSE)
       {
		int i = -1;
		try
		{
			//compare code
			if (strlen(sCode) + 1 == sizeof CODE_SELL)
				i = strcmp(CODE_SELL, sCode);

		} catch(char *str) {error_db_log(str);}

		if (i == 0)
		{
			//right code
			sellGuildhouse(player, _creature);
		}
		player->CLOSE_GOSSIP_MENU();
		return true;
	}
}
return false;
}


void AddSC_guildmaster()
{
Script *newscript;
newscript = new Script;
newscript->Name = "guildmaster";
newscript->pGossipHello = &GossipHello_guildmaster;
newscript->pGossipSelect = &GossipSelect_guildmaster;
newscript->pGossipSelectWithCode =  &GossipSelectWithCode_guildmaster;
newscript->RegisterSelf();
}

 

Share this post


Link to post
Share on other sites

Myslí.. ..přepsat to na novej formát scriptu TC (kdy je všechno ve třídě), pokud se nepletu.

Už to předělávám.. 30 minut mi dejte.

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Myslí.. ..přepsat to na novej formát scriptu TC (kdy je všechno ve třídě), pokud se nepletu.

Už to předělávám.. 30 minut mi dejte.

ty si zlato wolfe mucq te :D

Share this post


Link to post
Share on other sites

Upraveno pro TC rev. 9916 a vyšší (přepis pro nový scriptovací systém - vlastní třída, etc..)

 

:diablo:ZDROJÁK:diablo:

 

 

#include "ScriptPCH.h"

#define MSG_GOSSIP_TELE          "Teleport do vaseho Guild Housu"
#define MSG_GOSSIP_BUY           "Koupit Guild House(1000 gold)"
#define MSG_GOSSIP_SELL          "Prodat Guild House (500 gold)"
#define MSG_GOSSIP_NEXTPAGE      "Dalsi Stranka -->"
#define MSG_INCOMBAT             "Jsi v Combatu!"
#define MSG_NOGUILDHOUSE         "Vase Guilda nema Guild House!"
#define MSG_NOFREEGH             "Strpeni prosim, Vsechny guild housy jsou plne."
#define MSG_ALREADYHAVEGH        "Prominte, Ale uz mate Guild House (%s)."
#define MSG_NOTENOUGHMONEY       "Nemate Penize. Musite mit %u goldu ke koupeni Guild Housu."
#define MSG_GHOCCUPIED           "Omlouvame se, ale tento Guild House se jiz pouziva."
#define MSG_CONGRATULATIONS      "Gratulujeme! Koupili jste si Guild House!"
#define MSG_SOLD                 "Prodal jste Guild House. Tady je %u goldu."
#define MSG_NOTINGUILD           "Nejste v Guilde. Pripojte se nebo udelejte guildu."

#define CODE_SELL                "Prodat"
#define MSG_CODEBOX_SELL         "Vlozte \"" CODE_SELL "\" Pokud chcete opravdu Guild House prodat. Upozorneni ! : Dostanete jen 50 % hodnoty Gh !"

#define OFFSET_GH_ID_TO_ACTION   1500
#define OFFSET_SHOWBUY_FROM      10000

#define ACTION_TELE              1001
#define ACTION_SHOW_BUYLIST      1002  //deprecated. Use (OFFSET_SHOWBUY_FROM + 0) instead
#define ACTION_SELL_GUILDHOUSE   1003

#define ICON_GOSSIP_BALOON       0
#define ICON_GOSSIP_WING         2
#define ICON_GOSSIP_BOOK         3
#define ICON_GOSSIP_WHEEL1       4
#define ICON_GOSSIP_WHEEL2       5
#define ICON_GOSSIP_GOLD         6
#define ICON_GOSSIP_BALOONDOTS   7
#define ICON_GOSSIP_TABARD       8
#define ICON_GOSSIP_XSWORDS      9

#define COST_GH_BUY              900000000  //1000 g.
#define COST_GH_SELL             450000000   //500 g.

#define GOSSIP_COUNT_MAX         10


class guildmaster : public CreatureScript
{
private:
   bool isPlayerGuildLeader(Player *player)
   {
       return (player->GetRank() == 0) && (player->GetGuildId() != 0);
   }

   bool getGuildHouseCoords(uint32 guildId, float &x, float &y, float &z, uint32 &map)
   {
       if (guildId == 0)
       {
           //if player has no guild
           return false;
       }

       QueryResult result;
       result = WorldDatabase.PQuery("SELECT `x`, `y`, `z`, `map` FROM `guildhouses` WHERE `guildId` = %u", guildId);
       if(result)
       {
           Field *fields = result->Fetch();
           x = fields[0].GetFloat();
           y = fields[1].GetFloat();
           z = fields[2].GetFloat();
           map = fields[3].GetUInt32();
           return true;
       }
       return false;
   }

   void teleportPlayerToGuildHouse(Player *player, Creature *_creature)
   {
       if (player->GetGuildId() == 0)
       {
           //if player has no guild
           _creature->MonsterWhisper(MSG_NOTINGUILD, player->GetGUID());
           return;
       }

       if (!player->getAttackers().empty())
       {
           //if player in combat
           _creature->MonsterSay(MSG_INCOMBAT, LANG_UNIVERSAL, player->GetGUID());
           return;
       }

       float x, y, z;
       uint32 map;

       if (getGuildHouseCoords(player->GetGuildId(), x, y, z, map))
       {
           //teleport player to the specified location
           player->TeleportTo(map, x, y, z, 0.0f);
       }
       else
           _creature->MonsterWhisper(MSG_NOGUILDHOUSE, player->GetGUID());

   }

   bool showBuyList(Player *player, Creature *_creature, uint32 showFromId = 0)
   {
       //show not occupied guildhouses

       QueryResult result;
       result = WorldDatabase.PQuery("SELECT `id`, `comment` FROM `guildhouses` WHERE `guildId` = 0 AND `id` > %u ORDER BY `id` ASC LIMIT %u", showFromId, GOSSIP_COUNT_MAX);

       if (result)
       {
           uint32 guildhouseId = 0;
           std::string comment = "";
           do
           {

               Field *fields = result->Fetch();

               guildhouseId = fields[0].GetInt32();
               comment = fields[1].GetString();

               //send comment as a gossip item
               //transmit guildhouseId in Action variable
               player->ADD_GOSSIP_ITEM(ICON_GOSSIP_TABARD, comment, GOSSIP_SENDER_MAIN, guildhouseId + OFFSET_GH_ID_TO_ACTION);

           } while (result->NextRow());

           if (result->GetRowCount() == GOSSIP_COUNT_MAX)
           {
               //assume that we have additional page
               //add link to next GOSSIP_COUNT_MAX items
               player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOONDOTS, MSG_GOSSIP_NEXTPAGE, GOSSIP_SENDER_MAIN, guildhouseId + OFFSET_SHOWBUY_FROM);
           }


           player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());

           return true;
       } else
       {
           if (showFromId = 0)
           {
               //all guildhouses are occupied
               _creature->MonsterWhisper(MSG_NOFREEGH, player->GetGUID());
               player->CLOSE_GOSSIP_MENU();
           } else
           {
               //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
               //just show GHs from beginning
               showBuyList(player, _creature, 0);
           }
       }

       return false;
   }

   bool isPlayerHasGuildhouse(Player *player, Creature *_creature, bool whisper = false)
   {

       QueryResult result;

       result = WorldDatabase.PQuery("SELECT `comment` FROM `guildhouses` WHERE `guildId` = %u", player->GetGuildId());

       if (result)
       {
           if (whisper)
           {
               //whisper to player "already have etc..."
               Field *fields = result->Fetch();
               char msg[100];
               sprintf(msg, MSG_ALREADYHAVEGH, fields[0].GetString());
               _creature->MonsterWhisper(msg, player->GetGUID());
           }

           return true;
       }
       return false;

   }

   void buyGuildhouse(Player *player, Creature *_creature, uint32 guildhouseId)
   {
       if (player->GetMoney() < COST_GH_BUY)
       {
           //show how much money player need to buy GH (in gold)
           char msg[100];
           sprintf(msg, MSG_NOTENOUGHMONEY, COST_GH_BUY / 10000);
           _creature->MonsterWhisper(msg, player->GetGUID());
           return;
       }

       if (isPlayerHasGuildhouse(player, _creature, true))
       {
           //player already have GH
           return;
       }

       QueryResult result;

       //check if somebody already occupied this GH
       result = WorldDatabase.PQuery("SELECT `id` FROM `guildhouses` WHERE `id` = %u AND `guildId` <> 0", guildhouseId);

       if (result)
       {
           _creature->MonsterWhisper(MSG_GHOCCUPIED, player->GetGUID());
           return;
       }

       //update DB
       result = WorldDatabase.PQuery("UPDATE `guildhouses` SET `guildId` = %u WHERE `id` = %u", player->GetGuildId(), guildhouseId);

       if (result)

       player->ModifyMoney(-COST_GH_BUY);
       _creature->MonsterSay(MSG_CONGRATULATIONS, LANG_UNIVERSAL, player->GetGUID());

   }

   void sellGuildhouse(Player *player, Creature *_creature)
   {
       if (isPlayerHasGuildhouse(player, _creature))
       {
           QueryResult result;

           result = WorldDatabase.PQuery("UPDATE `guildhouses` SET `guildId` = 0 WHERE `guildId` = %u",
           player->GetGuildId());

           if (result)

           player->ModifyMoney(COST_GH_SELL);

           //display message e.g. "here your money etc."
           char msg[100];
           sprintf(msg, MSG_SOLD, COST_GH_SELL / 10000);
           _creature->MonsterWhisper(msg, player->GetGUID());
       }
   }

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

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOON, MSG_GOSSIP_TELE, 
           GOSSIP_SENDER_MAIN, ACTION_TELE);

       if (isPlayerGuildLeader(player))
       {
           //show additional menu for guild leader
           player->ADD_GOSSIP_ITEM(ICON_GOSSIP_GOLD, MSG_GOSSIP_BUY, GOSSIP_SENDER_MAIN, ACTION_SHOW_BUYLIST);
           if (isPlayerHasGuildhouse(player, _creature))
           {
               //and additional for guildhouse owner
               player->PlayerTalkClass->GetGossipMenu().AddMenuItem(ICON_GOSSIP_GOLD, MSG_GOSSIP_SELL, GOSSIP_SENDER_MAIN, ACTION_SELL_GUILDHOUSE, MSG_CODEBOX_SELL, 0, true);
           }
       }
       player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
       return true;
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 action )
   {
       if (sender != GOSSIP_SENDER_MAIN)
           return false;

       switch (action)
       {
           case ACTION_TELE:
               //teleport player to GH
               player->CLOSE_GOSSIP_MENU();
               teleportPlayerToGuildHouse(player, _creature);
               break;
           case ACTION_SHOW_BUYLIST:
               //show list of GHs which currently not occupied
               showBuyList(player, _creature);
               break;
           default:
               if (action > OFFSET_SHOWBUY_FROM)
               {
                   showBuyList(player, _creature, action - OFFSET_SHOWBUY_FROM);
               }
               else if (action > OFFSET_GH_ID_TO_ACTION)
               {
                   //player clicked on buy list
                   player->CLOSE_GOSSIP_MENU();
                   //get guildhouseId from action
                   //guildhouseId = action - OFFSET_GH_ID_TO_ACTION
                   buyGuildhouse(player, _creature, action - OFFSET_GH_ID_TO_ACTION);
               }
               break;
       }

       return true;
   }

   bool OnGossipSelectWithCode( Player *player, Creature *_creature, uint32 sender, uint32 action, const char* sCode )
   {
       if(sender == GOSSIP_SENDER_MAIN)
       {
           if(action == ACTION_SELL_GUILDHOUSE)
           {
               int i = -1;
               try
               {
                   //compare code
                   if (strlen(sCode) + 1 == sizeof CODE_SELL)
                       i = strcmp(CODE_SELL, sCode);

               } catch(char *str) {sLog.outErrorDb(str);}

               if (i == 0)
               {
                   //right code
                   sellGuildhouse(player, _creature);
               }
               player->CLOSE_GOSSIP_MENU();
               return true;
           }
       }
       return false;
   }
};


void AddSC_guildmaster()
{
   new guildmaster();
}

 

Je to v pohodě kompilovatelný. Otázkou je, jestli to bude funkční. :ermm: Nemám čas to zkoušet. :pinch::rofl:

 

Zdrojáky chcouce, vymočit se jdouce.. :thumbup: Čaůů :whistling:

Edited by Wolf Officious
  • Upvote 2

Share this post


Link to post
Share on other sites

ahoj, mohl by nekdo to udelat na mangos rev6928 díky.

Počkej, to je MaNGOS pro TBC, jestli si to dobře pamatuju.. ..myslím že tě zklamu, to je hodně stará záležitost a já to teda rozhodně dělat nebudu. Neřeknu kdybys to chtěl na něco novějšího, WotLKovýho.. ..ale takhle.. Myslím že to je nad moje síly, ale jestli se najde někdo, kdo se s tím bude chtít mazlit, tak proč ne. Jen říkám, že to asi nepůjde. :blink:

Share this post


Link to post
Share on other sites

nepujde jedine to napsat ciste pro mangos, tam je bo trid a hlavne je to uplne o necem jinym, holt pouzivas dinosaura medzi revkamy :huh:

Share this post


Link to post
Share on other sites

muzete mi poradit co stim mam :(

../game/libgame.a(ScriptLoader.cpp.o): In function `AddCustomScripts()':

ScriptLoader.cpp:(.text+0x45): undefined reference to `AddSC_guildmaster()'

../game/libgame.a(ScriptLoader.cpp.o): In function `AddScripts()':

ScriptLoader.cpp:(.text+0x1167): undefined reference to `AddSC_guildmaster()'

collect2: ld returned 1 exit status

make[2]: *** [src/server/worldserver/worldserver] Error 1

make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2

make: *** [all] Error 2

Share this post


Link to post
Share on other sites

Nevím jestli je to záměr nebo ne, ale chybí ti tady k tomu databáze. Takže pokud ji nemáš, odvoď si ji z kódu. Jinak tohle jsem jednou lehce přepsal pro deffender, mělo to v tabulce ještě nastavitelnou cenu gh. :) (berte to jako takový nápad na možnou budoucí úpravu)

Share this post


Link to post
Share on other sites

Hkarto, záměr to je, on to chtěl jenom přepsat, což jsem udělal. Tečka. :D A říkal jsem už že jsem to nezkoušel (in-game)? Jo.. :P

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  

×