Problème de send de texte si c'est possible aussi.
Bonjour je travail sur un script qui comprend 2 class ( CreatureScript, PlayerScript)

Dans ma class PlayerScript je souhaiterais que mon pnj codé dans ma class CreatureScript /whisp tout les joueurs inscrit par leur Guid dans une table de donné mais comment faire actuellement j'ai:

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

if (!result)
{
return;
}

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

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

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




}
}[/code]

Et sa ne marche pas ... Si quelqu'un était capable de sortir une idée de comment je pourrais faire en sorte que le pnj /w le joueur ou même faire un autre système permettant aux joueurs de voir ce texte en évitant d'utiliser sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg); qui montre le message à tous les joueurs présent sur le serveur je suis preneur.

Cordialement.
Quand tu dis ça ne marche pas, c'est à dire que ç acrashe? Que ça n'envois aucun message ?
ta table est-elle remplie?

Pourquoi tu ne fais pas un PSendSysMessage ??? ca envoie un message système au joueur dont tu as le guid ....
(08-07-2011 16:20)Elmsroth a écrit :  Quand tu dis ça ne marche pas, c'est à dire que ç acrashe? Que ça n'envois aucun message ?
ta table est-elle remplie?

Pourquoi tu ne fais pas un PSendSysMessage ??? ca envoie un message système au joueur dont tu as le guid ....


Non c'est à la compilation Pinch identificateur introuvable pour PsendSysMessage. ou valeur de variable vide en ce qui concerne pCreature. aussi le message doit être uniquement envoyer au joueur présent dans la table et indiqué par son Guid mais si le seul moyen si il y en a un est de passé par son Nom avec une variable char ce n'est pas un problème après comment assigné au Psendetc le guid du joueur pour qu'il ne soit envoyé qu'a celui ci ? Car ce bout de code se trouve dans un void update
#include "chat.h" ?
Merci un problème de résolue Asedic =) après comment faire en sorte que le PSendSysMessage soit envoyer a un guid précis si vous avez un exemple sous la main sa m'aiderai énormément. =)
Ca tombait sous le sens le PSensSysmessage dans chat.h... Clin

Astuce qui te sera utile pour plus tard : la logique.

Exemple ici :

Tu est confronté à un souci : envoyer un message dans le chat à un joueur précis.
Question à s eposer: Mais à quel moment peut on rencontrer ce genre de truc ?
Réponse : Dans les commandes en jeu par exemple (c'est une solution possible...) donc, ben on se rends dans le dossier commands des sources et on cherche où on peut avoir des envoi de messages.

Pour être plus rapide, on isole le handler d'une fonction qui retourne un message au joueur et dont on connait le nom (genre .password par exemple, ca retourne le résultat seulement au mec qui a tapé la commande, c’est un début de piste!) on va voire l'implémentation de cette commande dans le fichier cpp correspondant et on essaye de faire pareil.

(Pour ici faut tester si Player->isInWolrd (ou qqch du genre pour pas essayer d'envoyer un message à un mec déco..sinon = crash !, et ensuite tu récupère la session du mec en passant par le guid du perso ou en passant pas l'id du compte lié au perso, et tu envois le message à cette session)

Facile non ? Et pourtant je code presque jamais en c++, mais je me suis servi de simple déductions logique.

Je t'invite à faire de même pour tes soucis futurs ! Clin
Je le fait déjà c'est seulement la rédaction des fonctions de ce genre qui me pose problème. Il faut un début à tout nos erreurs nous font avancer et gagner de l'expérience.

Mais avec Psendect je ne vois pas ou indiquer le guid du joueur qui va recevoir le message .... et rien dans les commandes le montre ...
Tout simplement car dans la commande il prend automatiquement celui qui a fait la commande

Après cherche ya surement une fonction du style : pPlayer->SendSysMessage()

Enfin je crois
Apprenez a utiliser visual c++ ... je montre:

ChatHandler permet d'envoyer des message, pour utiliser cette fonction je tape ChatHandler( et j'ai donc la liste des définitions ...

[Image: sansre2pt.png]

Je vois qu'il me faut un joueur impécable je l'est.

ce qui nous donne : ChatHandler(player)
Bon ChatHandler est une class:: (Tout ce que je raconte après est un vocabulaire approximatif vu que j'ai appris au filling.)
pour voir les fonction on utilise donc un "." on a donc :

[Image: sansrefad.png]

On veut envoyer un message c'est donc du "Send" on ce retrouve avec c'est fonction:

[img][/img]

On a donc plus que un choix vu que on veut envoyer qu'a un joueur : PSendSysMessage...
On écrit donc "PsendSysMessage(" et là c++ nous balance la définition , la 1er me plait pas vu que c'est une entry,dans la db, j’appuie sur bas et je tombe sur :

[Image: sansre3nv.png]

Impeccable vu que un const char* est une chaine de texte .... on a juste a mettre

[Image: sansre4it.png]

et hop la fonction pour envoyer un message a été trouvée et et fonctionnel .... !

Tu peux faire ça pour casi tout !
Vérifie bien que le joueur existe et que ils soit co pour éviter les crash =)

PS : isInWorld() et pour le joueur.... if(!player)
Je suis pas sur que le IsInWorld() soit necessaire si tu fais un if(player) vu que l'objet player est détruit a la déconnexion Clin

Retourner en haut Accueil