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
-
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;
}
-
Salut,
je te conseille d'aller lire mon post à la fin du tuto sur les checkpoint dans la section en question...
++Sim++
-
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...
-
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++
-
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,
-
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 !
-
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,
-
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+
-
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,
-
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++
-
Salut,
Chez moi ca marche très bien :)
Aucun bug
même avec 10 Joueurs
Cordialement,