Ajout de la commande .qg
J'ai créé un patch pour ajouter la commande .qg sur le patch Location de qg de guilde.

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
Pièce(s) jointe(s)
.sql  .qg.sql (Taille : 110 octets)
Pas mal Clin

Même si ce n’est pas adapté au C++ met plutôt le BBCode [php] ça aura une coloration syntaxique à peu près potable et facilite la lecture de ton code sur ce topic. Merci.
Ou [code=cpp]
Voila

Retourner en haut Accueil