GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: iPod_Touch le 28 Décembre 2008, 18:52:31

Titre: Plusieurs checkpoint à la suite
Posté par: iPod_Touch le 28 Décembre 2008, 18:52:31
Bonjour, voilà je vous expose mon problème. Je veux créer un système de ligne de bus. Quand un joueur monte dans le bus1, un premier checkpoint apparait et lorsque le joueur rentre dans le premier checkpoint sa lui en met un deuxieme etc.. et c'est là que sa plante, en effet, au lieu de mettre le checkpoint suivant, sa le desactive et sa donne largent du dernier checkpoint.


Definition des variables :

new bus1;
new cpbus1;
new cpbus2;
new cpbus3;
new cpbus4;
new cpbus5;
new cpbus6;
new cpbus7;
new cpbus8;

Dans OnPlayerStateChange :

if (CarID==bus1) // HUNTER
{
cpbus1 = SetPlayerCheckpoint(playerid, 2613.0508,1049.9800,10.9331, 3.0);
SendClientMessage(playerid, COLOR_GREEN,"Tu dois faire tous les checkpoints pour finir ton travail !");
SendClientMessageToAll(COLOR_GREEN,"Un joueur est monté dans un bus de service.");
return 1;
}

Voila ce qu'il y a dans OnPlayerEnterCheckpoint :

if(cpbus1)
{
cpbus2 = SetPlayerCheckpoint(playerid, 2445.0000,1006.8864,11.0141, 3.0);
}
if(cpbus2)
{
cpbus3 = SetPlayerCheckpoint(playerid, 2372.8416,1079.7385,11.0051, 3.0);
}
if(cpbus3)
{
cpbus4 = SetPlayerCheckpoint(playerid, 2249.2275,1200.1082,11.0088, 3.0);
}
if(cpbus4)
{
cpbus5 = SetPlayerCheckpoint(playerid,2035.7023,1343.2631,11.0088, 3.0);
}
if(cpbus5)
{
cpbus6 = SetPlayerCheckpoint(playerid, 2289.7974,1380.6522,11.0119, 3.0);
}
if(cpbus6)
{
cpbus7 = SetPlayerCheckpoint(playerid, 2522.2854,1335.0219,10.9323, 3.0);
}
if(cpbus7)
{
cpbus8 = SetPlayerCheckpoint(playerid, 2614.9233,1081.2986,10.9940, 3.0);
}
if(cpbus8)
{
GivePlayerMoney(playerid, 1000000);
}
return 1;
}
Titre: Re : Plusieurs checkpoint à la suite
Posté par: S!m le 28 Décembre 2008, 22:27:07
Salut,

je te conseille d'aller lire mon post à la fin du tuto sur les checkpoint dans la section en question...

++Sim++
Titre: Re : Plusieurs checkpoint à la suite
Posté par: [StAfF]MaN le 28 Décembre 2008, 23:53:45
Il faut que tu détruise le checkpoint dans lequel est le joueur pour que le deuxième se mette.

if(cpbus1)
{
DestroyPlayerCheckpoint(playerid, cpbus1);
cpbus2 = SetPlayerCheckpoint(playerid, 2445.0000,1006.8864,11.0141, 3.0);
}
if(cpbus2)
{
DestroyPlayerCheckpoint(playerid, cpbus2);
cpbus3 = SetPlayerCheckpoint(playerid, 2372.8416,1079.7385,11.0051, 3.0);
}
if(cpbus3)
{
DestroyPlayerCheckpoint(playerid, cpbus3);
cpbus4 = SetPlayerCheckpoint(playerid, 2249.2275,1200.1082,11.0088, 3.0);
}

etc...
Titre: Re : Plusieurs checkpoint à la suite
Posté par: S!m le 29 Décembre 2008, 00:11:14
Salut,

tu ne peut utiliser des variables ainsi,

premièrement la fonction créant les checkpoint ne retourne aucune valeur spécifique (sauf un 1 si réussi et un 0 si raté, qui est là base)

ensuite la callback n'a aucun paramètre permettant de gérer un checkpointID

il faut utiliser une zone, non pas une variable

++Sim++
Titre: Re : Plusieurs checkpoint à la suite
Posté par: inbox le 29 Décembre 2008, 08:08:31
Bonjour,

Tu peux prendre celui la
http://forum.sa-mp.com/index.php?topic=49477.0 (http://forum.sa-mp.com/index.php?topic=49477.0)

Il est très bien pour se que tu souhaites faire
et sera plus facile sans doute pour toi :)

Bonne chance
Cordialement,
Titre: Re : Plusieurs checkpoint à la suite
Posté par: iPod_Touch le 30 Décembre 2008, 10:31:20
TU trouves ça plus simple?  :blink Ben pas moi ! lol , non mais j'arrive à comprendre le principe des checkpoints sur mon GM mais je pige pas pourquoi est-ce que lorsque l'on rentre dans le premier sa deglingue tout, je comprend vraiment pas, il y a surement une réponse !
Titre: Re : Plusieurs checkpoint à la suite
Posté par: inbox le 30 Décembre 2008, 12:32:31
Bonjour,

Beaucoup plus simple oui et très simple a faire marcher :)
donne toi les moyens de le faire.

Soit patient pour le codage
certain code demande plus d'une heure pour le réaliser pas 10 jours non plus :p

Cordialement,
Titre: Re : Plusieurs checkpoint à la suite
Posté par: iPod_Touch le 30 Décembre 2008, 13:26:36
Pour info, j'ai cherché un peu partout et j'ai trouvé encore plus simple ! Donc vu que je n'aime pas etre égoïste, je vais vous montrer à quoi ressemble le code:

celui ci a été créer par [_Fi_]Garderer que je remercie pour son aide indirecte :

http://pastebin.com/f5a376120 (http://pastebin.com/f5a376120)

Merci quand même d'avoir cherché pour mon problème !

A+
Titre: Re : Plusieurs checkpoint à la suite
Posté par: inbox le 30 Décembre 2008, 13:55:08
ou du genre avec

public OnPlayerEnterCheckpoint(playerid)
{
    if(Check[playerid] == 1)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°1");
    }
    else if(Check[playerid] == 2)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°2");
    }
    else if(Check[playerid] == 3)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°3");
    }
    return 1;
}

Ne pas oublier de mettre dans les commandes si ya une commande
les fonctions => Check[playerid] =1; ou Check[playerid] =2; Etc...

Cordialement,
Titre: Re : Re : Plusieurs checkpoint à la suite
Posté par: S!m le 30 Décembre 2008, 15:38:28
ou du genre avec

public OnPlayerEnterCheckpoint(playerid)
{
    if(Check[playerid] == 1)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°1");
    }
    else if(Check[playerid] == 2)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°2");
    }
    else if(Check[playerid] == 3)
    {
    SendClientMessage(playerid, Blanc, "Checkpoint N°3");
    }
    return 1;
}

Ne pas oublier de mettre dans les commandes si ya une commande
les fonctions => Check[playerid] =1; ou Check[playerid] =2; Etc...

Cordialement,

avec un code du genre tu n'arrivera à rien sauf si tu les mets tous aux bonnes valeurs au bon moment, va lire mon post ici stp....

http://www.gtaonline.fr/forums/index.php/topic,1719.45.html (http://www.gtaonline.fr/forums/index.php/topic,1719.45.html)

++Sim++
Titre: Re : Plusieurs checkpoint à la suite
Posté par: inbox le 30 Décembre 2008, 16:32:00
Salut,

Chez moi ca marche très bien :)
Aucun bug
 
même avec 10 Joueurs

Cordialement,