GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: dixon le 02 Novembre 2009, 21:53:43

Titre: Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: dixon le 02 Novembre 2009, 21:53:43
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 ...
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: Syg 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
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: dixon 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 !!!!
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: Ssk 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
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: cristab le 03 Novembre 2009, 13:00:50
http://lesfractales.nomades.ch/mandelbrot1.html (http://lesfractales.nomades.ch/mandelbrot1.html)   <=fractale de Mandelbrot

http://www.linternaute.com/femmes/prenoms/prenom/1007/julia/ (http://www.linternaute.com/femmes/prenoms/prenom/1007/julia/)  <= julia  :lmao
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: Syg le 03 Novembre 2009, 15:08:36
Benoit Mandelbort et Gaston Julia sont des mathématiciens -> http://lesfractales.nomades.ch (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 (http://lesfractales.nomades.ch/julia1.html)

++
Syg
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: Ssk 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
Titre: Re : Probléme checkpoint qui repette deux fois le sendclientmessage ...
Posté par: Syg 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