Problème de send de texte si c'est possible aussi.
mais je ne comprend pas ... car player doit être défini et ma fonction est void Update (uint32 p_time) donc la fonction ne donne en aucun cas "player" donc comment faire pour que ma requete Sql qui va chercher le guid du joueur lui envoi le texte ou alors j'ai mal compris et "player" doit être la variable qui prend la valeur du Guid du joueur enregistré dans ma table ?
Player* player = sObjectMgr->GetPlayerByGUIDLow(uint32 guid);

c'est tout ... tu repasseras


Player* (pointeur de la classe)
player (appelation du pointeur)
= est égale à
sObjectMgr->(class)+ singleton
GetPlayerByGUIDLow(fonction)
uint32 guid (le guid du joueur)


cette fonction retourne un Player*
vlà
(09-07-2011 11:49)totomakers a écrit :  Player* player = sObjectMgr->GetPlayerByGUIDLow(uint32 guid);

c'est tout ... tu repasseras

Mon code:
[code=cpp]void OnPlayerUpdate(Player* player, uint32 p_time)
{

if ( nbgroupe == 1) // 10
{
if ( annonce == 1 )
{
annonce = 0;
char msg[255];
sprintf(msg, " Il vous reste 5 minutes pour vous inscrir.");
sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
Fininscription_Timer = 300000;
FininOn = 1;
}
}

if (FininOn == 1)
{
if (Fininscription_Timer <= p_time)
{
start_tlms = 1;
char ms[255];
sprintf(ms, "L event va commencer !" );
sWorld->SendWorldText(LANG_SYSTEMMESSAGE, ms);
FininOn = 0;
} else Fininscription_Timer -= p_time;
}

if (FininOn == 0)
{
if (start_tlms == 1)
{
QueryResult result = WorldDatabase.PQuery("SELECT joueur FROM crypt");

if (!result)
{
return;
}

do
{
Field *fields = result->Fetch();

uint32 SendJoueur = fields[0].GetUInt32();

MonsterWhisper("Vous allez etre teleporte dans 2 minutes. Preparez vous.", SendJoueur);
}
while (result->NextRow());




}
}



}

[/code]
Donc la fonction remplacera ici Monsterwhisper
Arg je veux pas lire!

si tu na qu'une seule instruction dans un if
tu peut mettre

[code=cpp]
if(blabla)
return;
[/code]

Fininscription_Timer pas déclarer
nbgroupe pas déclarer donc tu peux pas utiliser...
annonce idem
3000000 ms ? pk pas utiliser 30*MINUTE*IN_MILLISECONDS

Il est moche ton code je le comprend même pas , tu ne m'explique pas ce qu'il doit faire...
pour le texte std::string apprendre = "Apprend !!!";
tu peux l'utiliser avec un apprendre.c_str()
plus propre peut être que des char[255]
(09-07-2011 11:49)totomakers a écrit :  sObjectMgr->(fonction)

OMG . Comme son nom l'indique c'est le manager d'objets , donc le manager d'instances , de players , du world (singleton) , ...
Édition :
C'est une classe (ici instanciée en objet qui doit aussi être un singleton)
Merci Asédic , comme je l'est précisée je n'est pas le vocabulaire Hihi'
Les variables sont déclaré dans un fichier.h, 300000 = 5 minutes. C'est un event où les joueurs s'inscrivent et sont enregistré dans une table crypt (joueur,mort,groupe,place) en équipe de 5 la colonne joueur contient le GUIDlow des joueurs présent dans le groupe du joueur inscrit lorsque le nombre de groupe créer atteint 5 ( ici 1 pour tester ) cela ferme les inscriptions et envoi sur le serveur entier que l'event va commencer a ce moment tous les joueurs inscrit dans la table doivent recevoir le texte leur disant qu'ils vont être téléporté dans 2 minutes et qu'ils doivent se préparer d'où la requete Sql car l'event sera composé de 50 joueurs et le message doit être envoyer aux personnes notés dans la table "crypt"

Donc ce que je veut dire c'est qu'il faudrait que Player* player = sObjectMgr->GetPlayerByGUIDLow(uint32 guid); soit remplacé par Player* player = SendJoueur qui est le résultat de ma requête.
[code=cpp]void OnPlayerUpdate(Player* player, uint32 p_time)
{

if ( nbgroupe == 1&& annonce == 1) // 10
{
annonce = 0;
WorldPacket data;
data << "ton message ou ta variable";
pPlayer->SendMessageToSet(data,true);
Fininscription_Timer = 300000;
FininOn = 1;
}
}

if (FininOn == 1 && Fininscription_Timer <= p_time)
{
start_tlms = 1;
WorldPacket data;
data << "ton message ou ta variable";
pPlayer->SendMessageToSet(data,true);
FininOn = 0;
} else if (FininOn)
Fininscription_Timer -= p_time;

if (FininOn == 0 && start_tlms == 1)
{
QueryResult result = WorldDatabase.PQuery("SELECT joueur FROM crypt");

if (!result)
{
return;
}

do
{
Field *fields = result->Fetch();

uint32 SendJoueur = fields[0].GetUInt32();

Player* playerSend = sObjectMgr->GetPlayerByGUIDLow(SendJoueur);
WorldPacket data;
data << "ton message ou ta variable";
playerSend->SendMessageToSet(data,true);
}
while (result->NextRow());

}
}
[/code]

Mes remarques :

-1 if vaut bien mieux que deux
-Tu fais une fonction là ou il devrait en avoir deux

Voilà
Géniale merci =) ! j'ai fait un nouveau pat en avant avec vos explications =)

Retourner en haut Accueil