Donc tout d'abord vous devez avoir installé Location de Qg: mis à jours
Tout d'abord editez le fichier chat.h (src\server\game\chat\chat.h)
[code=cpp] bool HandleWaterwalkCommand(const char* args);
+ //Commande .QG
+ bool HandleQGCommand(const char* args);
bool HandleLevelUpCommand(const char* args);[/code]
Ensuite éditez le fichier chat.cpp (src\server\game\chat\chat.cpp) et rajoutez :
[code=cpp] { "waterwalk", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleWaterwalkCommand>, "", NULL },
+ //qg
+ { "qg", SEC_PLAYER, false, OldHandler<&ChatHandler::HandleQGCommand>, "", NULL },
{ "freeze", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleFreezeCommand>, "", NULL },[/code]
Ensuite trouvez le fichier world.h (src\server\game\World\world.h) et ajoutez :
[code=cpp]//QG de guilde
CONFIG_QG_NOT_ENABLE,
+ CONFIG_COMMAND_QG_NOT_ENABLE,
CONFIG_ALLOW_TICKETS,[/code]
Trouvez le fichier world.cpp (src\server\game\World\world.h) et ajoutez :
[code=cpp] //Qg de guilde
m_bool_configs[CONFIG_QG_NOT_ENABLE] = sConfig->GetBoolDefault("QG.Enable", false);
+ m_bool_configs[CONFIG_COMMAND_QG_NOT_ENABLE] = sConfig->GetBoolDefault("QG.Command.Enable", false);
// MySQL ping time interval
m_int_configs[CONFIG_DB_PING_INTERVAL] = sConfig->GetIntDefault("MaxPingTime", 30);[/code]
Modifiez le worldserver.conf.dist (src\server\worldserver\worldserver.conf.dist) :
Code :
###############################################################################
# QG DE GUILDE
#
# QG.Enable
# Active le système de Qg de guilde
# Default: 0 - off
# 1 - on
+#
+# QG.Command.Enable
+# Active la commande de teleportation au QG
+# Default: 0 - off
+# 1 - on
#
###############################################################################
QG.Enable = 1
+QG.Command.Enable = 0
Enfin rajoutez dans level0.cpp (src\server\game\Chat\Commands\level0.cpp) :
[code=cpp]///QG command
//fonction de recuperation des coordonées de tp
bool getGuildHouseCoords(uint32 guildId, float &x, float &y, float &z, uint32 &map)
{
if (guildId == 0)
{
//si le joueur n'a pas de guilde
return false;
}
QueryResult result;
result = LoginDatabase.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;
}
//comande de tp
bool ChatHandler::HandleQGCommand(const char* /*args*/)
{
Player *pPlayer = m_session->GetPlayer();
if (!sWorld->getBoolConfig(CONFIG_QG_NOT_ENABLE))
{
//si le qg de guilde n'est pas activé
PSendSysMessage("Commande desactivée.");
return true;
}
if (!sWorld->getBoolConfig(CONFIG_COMMAND_QG_NOT_ENABLE))
{
//si la commande qg de guilde n'est pas activé
PSendSysMessage("Commande desactivée.");
return true;
}
if (pPlayer->GetGuildId() == 0)
{
//si le joueur n'a pas de guilde
PSendSysMessage("Vous n'avez pas de guilde.");
return true;
}
if (pPlayer->isInCombat())
{
//si le joueur est en combat
PSendSysMessage("Vous etes en combat.");
return true;
}
float x, y, z;
uint32 map;
if(getGuildHouseCoords(pPlayer->GetGuildId(), x, y, z, map))
{
//tp du joueur
pPlayer->TeleportTo(map, x, y, z, 0.0f);
return true;
}
else
{
//le joueur n'a pas de qg
PSendSysMessage("Votre guilde ne possede pas de QG.");
return true;
}
}[/code]
Après :
[code=cpp]/// Display the 'Message of the day' for the realm
bool ChatHandler::HandleServerMotdCommand(const char* /*args*/)
{
PSendSysMessage(LANG_MOTD_CURRENT, sWorld->GetMotd());
return true;
}[/code]
Plus que le sql a injecter :
Code :
INSERT INTO `command` VALUES ('qg', '0', 'Syntax: .qg Vous teleporte au Quartier General de votre guilde');
Pour activer la commande mettez QG.Command.Enable = 1
Voila j’espère que ça vous a plus.
J'interdit a toute personne de reproduire ce tuto sans mon accord