• 29 Mars 2024, 08:21:13


Auteur Sujet: Probléme checkpoint qui repette deux fois le sendclientmessage ...  (Lu 1016 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne dixon

  • *
  • Tueur en série
  • Jamais Je n'abandonnerai
  • Messages: 159
    • Voir le profil
    • :... Universal Gaming ...:
Salut, tous, voilà je suis en plein action sur mon nouveau GM qui est un RPG mais Zombie ect...

Le probléme c'est quand je met plusieur checkpoint pour chaque commande ex: /livre1 /livre2 /livre3 chaque commande est constitué un checkpoint qui s'affiche quand on tape la commande ainsi de suite, mais le probleme c'est quand on arrive au 3 checkpoit c'est a dire /livre3 il remet le messahe du checkpoint n°2, je sais que la limite est de 2 checkpoint en même temps mais sa ne peut pas être sa qui bloque, voilà le code de comment j'ai procedé :

if (strcmp(cmd, "/livre", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
if(PlayerToPoint(50,playerid,836.0416,-1101.9009,24.3040)) // Livre Checkpoint
{
                        SendClientMessage(playerid, COLOR_PURPLE, "!---------------------------------------------------------------------------------!");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Ce livre dit que un virus a devaster toute la ville !");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Il me fraudrai peut-être plus d'information concernant ce virus  !");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Avançon plus loin, cette endroit me fiche la trouille  !");
SendClientMessage(playerid, COLOR_PURPLE, "!---------------------------------------------------------------------------------!");
SetPlayerCheckpoint(playerid, 954.4911,-1103.8608,23.8029, 3.0);
}
}
return 1;
}
if (strcmp(cmd, "/livre2", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
if(PlayerToPoint(50,playerid,954.4911,-1103.8608,23.8029)) // Livre Checkpoint2
{
SetPlayerCheckpoint(playerid, 954.4911,-1103.8608,23.8029, 3.0);
            SendClientMessage(playerid, COLOR_YELLOW, "!---------------------------------------------------------------------------------!");
SendClientMessage(playerid, COLOR_RED, "INCONNU dit: C'est un vrai carnage, je me demande ce qui est bien pus ce passé?");
SendClientMessage(playerid, COLOR_RED, "INCONNU dit: J'ai entendu un bruit par là-bas allon voir !");
SendClientMessage(playerid, COLOR_YELLOW, "!---------------------------------------------------------------------------------!");
}
}
return 1;
}
if (strcmp(cmd, "/livre3", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
if(PlayerToPoint(50,playerid,999.7227,-1141.3674,23.8057)) // Livre Checkpoint3
{
            SendClientMessage(playerid, COLOR_PURPLE, "!---------------------------------------------------------------------------------!");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Cette page me dit comment survivre au Zombie de Type B Armée, il parle peut-être du la chose devant ?");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Quand vous verez un prototype tirer avec une minigun vous serez contraint de trouvé une autre issue !");
SendClientMessage(playerid, COLOR_LIGHTRED, "INCONNU dit: Va vraiment faloir que je trouve un véhicule, il est pas question de faire demi-tour, où je vais y passé !!!");
SendClientMessage(playerid, COLOR_PURPLE, "!---------------------------------------------------------------------------------!");
   DisablePlayerCheckpoint(playerid);
}
}
return 1;
}

Et le OnPlayerEnterCheckpoint :

public OnPlayerEnterCheckpoint(playerid)
{
if(PlayerToPoint(50,playerid,836.0416,-1101.9009,24.3040))
    {
    SendClientMessage(playerid, COLOR_RED,"INCONNU dit: Quesque, ce livre par terre ? /livre pour le lire");
    DisablePlayerCheckpoint(playerid);
}
    else if(PlayerToPoint(50,playerid,954.4911,-1103.8608,23.8029))
    {
    SendClientMessage(playerid, COLOR_RED,"INCONNU dit: Je devrai peut être lire la suite ? /livre2 pour la suite"); // c'est ici qu'il me le mais quand on rentre dans checkpoint du /livre3
    DisablePlayerCheckpoint(playerid);
}
else if(PlayerToPoint(50,playerid,999.7227,-1141.3674,23.8057))
{
SendClientMessage(playerid, COLOR_RED,"INCONNU dit: Il y a quelq'un la-bas, Il est bizzare ? /livre3 pour continuer");
DisablePlayerCheckpoint(playerid);
}
return 1;
}

J'ai essayer plusieur solution aucune d'elle ne marche, je vous remercient d'avance pour votre d'aide ...
« Modifié: 02 Novembre 2009, 22:19:26 par dixon »
Modern Sensation RP, Du RP comme vous en avez jamais VU
En Construction | Ouverture Beta Bientôt

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #1 le: 03 Novembre 2009, 11:32:18 »
Le problème est très simple, tes CP 2 et 3 sont trop près les uns des autres.
Ta fonction PlayerToPoint à un rayon de 50 mètres et il y a surement moins de 50 mètres entre le CP 2 et le CP 3.
Donc quand tu rentres dans le CP 3, le test PlayerToPoint du CP 2 reste valable et il t'affiche le message du CP 2.

Il y a plusieurs solutions (de la plus simple à la plus compliquée) :
- Diminuer le rayon dans le fonction PlayerToPoint (je pense que 6 mètres devrait suffire car tes CP ont un rayon de 3 mètres),
- Ne pas utiliser PlayerToPoint pour détecter où est le joueur mais utiliser une variable,
- Afficher une fractale de Mandelbrot puis sélectionné l'ensemble de Julia le plus proche du joueur pour en déduire le message à afficher.

++
Syg
Courtesy of GtaManiac

Hors ligne dixon

  • *
  • Tueur en série
  • Jamais Je n'abandonnerai
  • Messages: 159
    • Voir le profil
    • :... Universal Gaming ...:
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #2 le: 03 Novembre 2009, 12:29:53 »
Salut syg, je pense que je vais me reférer sur la première solution, je pense que c'est la plus facile   :happy

Merci, vous pouvez lock  :lock !!!!
Modern Sensation RP, Du RP comme vous en avez jamais VU
En Construction | Ouverture Beta Bientôt

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #3 le: 03 Novembre 2009, 12:41:14 »
Citer
- Afficher une fractale de Mandelbrot puis sélectionné l'ensemble de Julia le plus proche du joueur pour en déduire le message à afficher.


O_o j' ai pas compris ce que c' etait lol



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #5 le: 03 Novembre 2009, 15:08:36 »
Benoit Mandelbort et Gaston Julia sont des mathématiciens -> http://lesfractales.nomades.ch.

Pour Mandelbrot, le premier lien de cristab est correct.
Pour Julia, sur le même site : http://lesfractales.nomades.ch/julia1.html

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #6 le: 03 Novembre 2009, 19:17:26 »
ah je comprend mieu le theoreme c' est du niveau que je quelifirais de trop trop trop haut pour moi lol



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
« Réponse #7 le: 03 Novembre 2009, 23:51:21 »
Ma troisième solution reste quand même une connerie, c'était de l'humour.

Même si il est vrai qu'à chaque point de l'ensemble de Mandelbrot il existe un ensemble de Julia.

++
Syg
Courtesy of GtaManiac