GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Tutoriels et références SA:MP => Discussion démarrée par: UrbanGhetto le 25 Octobre 2007, 23:27:45

Titre: [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 25 Octobre 2007, 23:27:45
Bonjour et bienvenue dans le tutorial qui va vous apprendre à déchiffrer les CheckPoint  :)

Au menu :

I) Créer un CheckPoint.
II) Désactiver les CheckPoints.
III) Lancer une action dans un CheckPoint.

I) Créer un CheckPoint :
Il y a 5 paramètres dans un CheckPoint

SetPlayerCheckpoint(playerid, X, Y, Z, Taille);
Les paramètres :


Exemple d'utilisation :

public OnPlayerSpawn(playerid)
{
    SetPlayerCheckpoint(playerid, -1671.22, 685.87, 30.60, 4);
    return 1;
}

II) Désactiver les CheckPoints :

Il y a 1 seul paramètre dans la désactivation des CheckPoint :

DisablePlayerCheckpoint(playerid);

Exemple d'utilisation :

public OnPlayerEnterCheckpoint(playerid)
{
    DisablePlayerCheckpoint(playerid);
    return 1;
}

III) Lancer une action dans un CheckPoint :

Maintenant, Je vais vous montrer comment activer une action quand on entre dans un CheckPoint.

public OnPlayerSpawn(playerid)
{
    SetPlayerCheckpoint(playerid, -1671.22, 685.87, 30.60, 4);
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    //nous vérifions si le joueur est suffisamment près du checkpoint pour lancer l'action
    //notez pour la distance j'ai mis une valeur légèrement supérieure à celle du rayon du checkpoint pour être de détecter le checkpoint correctement

    if (IsPlayerInRangeOfPoint(playerud, 5.0, -1671.22, 685.87, 30.60))
    {
        SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");//nous lui envoyions un message pour l'avertir qu'il y est
        DisablePlayerCheckpoint(playerid);//nous lui retirons le checkpoint
    }
    return 1;
}

Voila, Les CheckPoints n'ont plus de secret pour vous  :)

A très bientôt  ;)

EDIT Sim: Corrigé certaines inexactitude +indentation....
Titre: Re : [TUTO] Les CheckPoints
Posté par: Nip le 25 Octobre 2007, 23:36:12
lu
Merci urban pour le tuto

Mais est t/il possible que quand je rentre dans le check points sa me teleporte une infernus ou autre et je sui directement dedan????



Merci
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 25 Octobre 2007, 23:47:17
new Check1;

public OnPlayerSpawn(playerid){
Check1 = SetPlayerCheckpoint(playerid, -1671.22, 685.87, 30.60, 4);
return 1;
}

public OnPlayerEnterCheckpoint(playerid) {
if (Check1){ // Si le joueur est dans le CheckPoint définis :
new Float:x;
new Float:y;
new Float:z;
new Float:Angle;
new Infernus;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid,Angle);
Infernus = CreateVehicle(411,x,y,z,Angle,1,1,50000);
PutPlayerInVehicle(playerid,Infernus,0);
}
return 1;
}

T'as pas plus dûr ?  :P
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 26 Octobre 2007, 01:05:15
Très bien ce tuto.

Juste une petite remarque : Etant donné que le joueur ne peut avoir qu'un seul checkpoint à la fois, le test if (Check1) est
inutile puisque si on arrive là, c'est que le joueur est dans le seul et unique checkpoint.

++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 26 Octobre 2007, 09:18:52
Oui, Je ne sais pas vraiment pourquoi la Team SA-MP n'a pas permis ça  :(

Par contre on peut utiliser la nouvelle fonction SetPlayerRaceCheckpoint qui peut autoriser jusqu'a 2 Checkpoints  :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 26 Octobre 2007, 16:03:17
Je ne sais pas ce que donne l'utilisation conjointe de SetPalyerCheckpoint et SetPlayerRaceCheckpoint.
Mais ces deux fonctions correspondent à deux callbacks différentes (OnPlayerEnterCheckpoint et OnPlayerEnterRaceCheckpoint)
Donc un joueur peut bien avoir deux chekcpoint en même temps mais pas du même type.

++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: UZI-I le 26 Octobre 2007, 16:50:40
Les CheckPoint et CheckPointRace sont bien different dans le jeu.

Et pourquoi la team SA-MP n'as pas permis l'utilisation de plusieurs checkpoint ? Beh ils sont dans la logique que plusieur sa bouffe de la bande passates et que CJ est jamais a deux endroit en meme temp.

Pour les checkPointRace c'est le jeu qui permet pas plus de deux.
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 26 Octobre 2007, 20:27:41
Bonne déduction UZI-I  :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 26 Octobre 2007, 21:50:02
Pour les RaceCheckpoints, on ne peut en avoir qu'un seul à la fois, comme les autres.
La différence c'est qu'on peut spécifier des coordonnées supplémentaires pour orienter la flèche à l'intérieur du RaceCheckpoint. Mais ces coordonnées ne sont pas forcément les coordonnées d'un autre checkpoint (bien que ce soit ce qu'il y a de plus logique).

++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: omar93500 le 28 Octobre 2007, 11:41:22
BOnjour j'ai une question comment fait-on pour que lorsque le joueur est dans le checkpoint il peut faire une commande (seulement dans le checkpoint)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 28 Octobre 2007, 22:57:37
En fait, il vaut mieux tourner ta question dans l'autre sens :

"Comment fait-on pour que le joueur ne puisse faire une commande que quand il est dans un checkpoint ?"

Et la réponse est simple :
Il suffit d'utiliser la fonction IsPlayerInCheckpoint (ou IsPlayerInRaceCheckpoint selon le cas) pour tester si le joueur est sur son checkpoint (ou racecheckpoint).

++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: omar93500 le 29 Octobre 2007, 12:15:36
Merci syg mais j'ai 2 checkpoint ou plutot 1 check point et un Racecheckpoint
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 29 Octobre 2007, 12:18:41
Et bien tu combines les deux fonctions IsPlayerInCheckpoint et IsPlayerInRaceCheckpoint dans ton test.

++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: omar93500 le 30 Octobre 2007, 11:32:59
Merci
Titre: Re : [TUTO] Les CheckPoints
Posté par: omar93500 le 05 Novembre 2007, 16:19:26
Bonjour, j'ai une autre question comment faire pour voir un checkpointa une certaine distance? Moi on voit mon checkpoint meme si on est a l'otre bout de San Andreas.
Merci  :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 05 Novembre 2007, 18:27:01
Tu définit une zone. Si le joueur est dans cette zone, Il voit le CheckPoint, Sinon il y à rien
Titre: Re : [TUTO] Les CheckPoints
Posté par: omar93500 le 05 Novembre 2007, 18:40:10
Ok MErci!
Titre: Re : [TUTO] Les CheckPoints
Posté par: R@f le 05 Novembre 2007, 18:44:10
y avait un bon exemple dans un script mais je me souviens plus le quel,essaye le lvdm de 0.1 (je suis pas sur du tout)
Titre: Re : [TUTO] Les CheckPoints
Posté par: ApocKalipsS le 07 Novembre 2007, 19:30:49
Salut alors voici mon code :
//------------------------------------------------------------------------------
public OnPlayerEnterCheckpoint(playerid) {
DisablePlayerCheckpoint(playerid);
if (Check1){ // Si le joueur est dans le CheckPoint définis :
SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");

return 1;
}


//------------------------------------------------------------------------------



public OnPlayerSpawn(playerid)
{


SetPlayerCheckpoint(playerid, -1936.8719,294.5338,47.7031, 2);
Check1 = SetPlayerCheckpoint(playerid, -1936.8719,294.5338,47.7031, 2);
}
new iconid;
{
SetPlayerMapIcon(playerid, iconid,  1948.3848,-2184.4851,13.5542, 48, COLOR_YELLOW);
}
SetPlayerInterior(playerid,0);

et j'ai deux erreurs :
C:\DOCUME~1\pcadrien\MESDOC~1\SERVEU~1\GAMEMO~1\SFTDM(5).pwn(658) : error 029: invalid expression, assumed zero
C:\DOCUME~1\pcadrien\MESDOC~1\SERVEU~1\GAMEMO~1\SFTDM(5).pwn(658) : error 004: function "OnPlayerSpawn" is not implemented

Et la ligne 658 est celle ci :
public OnPlayerSpawn(playerid)Merci de m'aider a resoudre le pb ! A+
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 07 Novembre 2007, 21:49:32
Hum, Va falloir commencer à arranger les erreurs tout seul si tu veux faire un pat en avant dans le scripting.

return 1;
}
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 08 Novembre 2007, 02:47:04
Je vois très bien ce qui t'arrive, Lepro49, t'a mis des accolades un peu n'importe où et le compilo n'arrive plus à s'y retrouver.
Je vais le répéter encore une fois :

INDENTER SON SCRIPT CORRECTEMENT, C'EST PAS POUR FAIRE JOLI !!


//------------------------------------------------------------------------------
public OnPlayerEnterCheckpoint(playerid)
{
   DisablePlayerCheckpoint(playerid);
   if (Check1)
   { // Si le joueur est dans le CheckPoint définis :
      SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");
   }
   return 1;
}

//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
   SetPlayerCheckpoint(playerid, -1936.8719,294.5338,47.7031, 2);
   Check1 = SetPlayerCheckpoint(playerid, -1936.8719,294.5338,47.7031, 2);
   new iconid;
   SetPlayerMapIcon (playerid, iconid,  1948.3848,-2184.4851,13.5542, 48, COLOR_YELLOW);
   SetPlayerInterior(playerid,0);
}

++
SYg
Titre: Re : [TUTO] Les CheckPoints
Posté par: ApocKalipsS le 08 Novembre 2007, 17:18:19
Ok, j'ai essayer de tout reformuler ca....
J'ai plus que 1 erreur :
1794) : error 004: function "SetupPlayerForClassSelection" is not implemented
Avant ca ne le faisait pas... Je ne trouve pas pourquoi sa fait sa ? Aidez-moi !
Urbaghetto, dans un post précédent tu voulais quelqu'chose de dur hein ? Et ba voila :
Je voudrais mettre des checkpoint un peut partout dans SA et c'est comme les huitres ou les tags ou les fers a cheval, il faut les trouver et a chaque fois que tu les as trouver tu va dedans et tu as une récompense... Bon ba j'y vais a++

Merci de me rep.
Titre: Re : [TUTO] Les CheckPoints
Posté par: R@f le 08 Novembre 2007, 17:33:02
demain ou aujourd'hui peut etre je vais te montrer comment faire, j ai pas le temps maintenant (entrainement d'aviron). Je vais mettre un exemple sur pastbin, mettre des screens et bien t'expliquer le tout comme sa tu comprendras ;)

++
R@f
Titre: Re : [TUTO] Les CheckPoints
Posté par: jonjon le 04 Janvier 2008, 19:44:21
pfiou moi j'ai du mal avec les checkpoints , je fais tout bien comme il faut (enfin je pense lol) aucun wanring rien, mais quand je vais sur le serveur je vois rien....

Si quelqu'un a une réponse...

Merci d'avance ;)

++

j0nj0n
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 04 Janvier 2008, 20:31:35
Euh le SetPlayerCheckpoint il faut le mettre dans OnPlayerConnect, Pas dans OnGameModeInit...
Titre: Re : [TUTO] Les CheckPoints
Posté par: Bayshore le 17 Février 2008, 15:13:22
Salut, je suis débutant en Pawn et j'ai voulu améliorer le code donner par Urban pour spawner un véhicule, mais ça ne marche pas. :ninja

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/nrg500", cmdtext, true) == 0)
{
if (!IsPlayerInAnyVehicle)
{
new Float:nrg500x;
new Float:nrg500y;
new Float:nrg500z;
new Float:nrg500Angle;
new nrg500;
GetPlayerPos(playerid, nrg500x, nrg500y, nrg500z);
GetPlayerFacingAngle(playerid,nrg500Angle);
nrg500 = CreateVehicle(522,nrg500x,nrg500y,nrg500z,nrg500Angle,158,175,50000);
PutPlayerInVehicle(playerid,nrg500,0);
return 1;
}

else
{
SendClientMessage(playerid,COULEUR_JAUNE, "Sortez de votre véhicule avant d'en spawné un autre!");
return 1;
}
}
return 0;
}

error 076: syntax error in the expression, or invalid function call

Si vous pourriez m'aider ce serait top. (http://www.jeuxvideo.com/smileys/71.gif)
Merci d'avance. (http://www.jeuxvideo.com/smileys/54.gif)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Syg le 18 Février 2008, 11:57:05
Ah la belle erreur, ça me rappelle ma jeunesse, j'avais passer une journée sur exactement la même erreur mais dans mons cas, j'avais pas d'erreur de compil (c'était du C).

Bref, trève de nostalgie.
Pour ton erreur, tu as simplement oublié les parenthèses dans IsPlayerInAnyVehicle :
if (!IsPlayerInAnyVehicle)devient
if (!IsPlayerInAnyVehicle ())
++
Syg
Titre: Re : [TUTO] Les CheckPoints
Posté par: Bayshore le 18 Février 2008, 20:00:57
Ah ok, c'était ça! :laugh :laugh

En plus j'ai l'habitude des parenthèses pourtant avec le PHP :dry ¬¬

merci Syg. :)

++
ZecKo
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 12 Mai 2008, 22:14:58
Salut,

Moi j'ai un problème avec le code
ca me dit

D:\Mes_Jeux\gta\gamemodes\test.pwn(5308) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

Header size:           4176 bytes
Code size:           267672 bytes
Data size:           348688 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5540 cells (22160 bytes)
Total requirements:  636920 bytes

1 Warning.

Pourtant c'est bien mis ici

public OnPlayerEnterCheckpoint(playerid)
{
if (Check1)
{
SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");
}
return 1;
}

Savez vous pourquoi ?
Titre: Re : [TUTO] Les CheckPoints
Posté par: Bayshore le 12 Mai 2008, 22:20:35
Mauvaise indentation. :)

Code: (pawn) [Sélectionner]
public OnPlayerEnterCheckpoint(playerid)
{
if (Check1)
{
SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");
}
return 1;
}

++
Alexandre
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 12 Mai 2008, 22:31:22
oué je me doute mais ca le désactive pas c'est ca qui est bizarre
faut dire aussi que j'ai du mal lol

j'ai fait

      public OnPlayerEnterCheckpoint(playerid)
      {
      if (Check1)
      {
      SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint atteint.");
      DisablePlayerCheckpoint(playerid);
      }
      return 1;
      }
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 12 Mai 2008, 22:39:39
j'ai fait comme ca ca l'aire de marcher

public OnPlayerEnterCheckpoint(playerid)
{
   if (Check1)
   {
   }else {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 1.");
   DisablePlayerCheckpoint(playerid);
   AddStaticVehicle(477,1445.4526,974.2831,10.5534,1.6213,-1,-1);
   }
   
   if (Check2)
   {
   }else {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 2.");
   DisablePlayerCheckpoint(playerid);
   }
   return 1;
}

quand je vais sur le 1er checkpoint ca me donne les deux phrases (CheckPoint 1 et CheckPoint 2.)

alors que c'est pas le meme race

if(strcmp(cmdtext, "/race", true) == 0)
{
SetPlayerCheckpoint(playerid, 1958.3783,1343.1572,15.3746, 4);
return 1;
}

Merci en tout cas pour ton aide :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Nikko™ le 13 Mai 2008, 14:52:52
Cest normal que ca bug! XD regarde:

public OnPlayerEnterCheckpoint(playerid)
{
   if (Check1)
   {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 1.");
   DisablePlayerCheckpoint(playerid);
   AddStaticVehicle(477,1445.4526,974.2831,10.5534,1.6213,-1,-1);
   }
   
   if (Check2)
   {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 2.");
   DisablePlayerCheckpoint(playerid);
   }
   return 1;
}

Esseye comme ca  ;)

++
nikko

Ps: Evite les doubles postes  :rules  ;)
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 13 Mai 2008, 17:42:01
Bonjour,

j'ai fait le code suivant

public OnPlayerEnterCheckpoint(playerid)
{
   if (Check1)
   {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 1.");
   DisablePlayerCheckpoint(playerid);
   }

   if (Check2)
   {
   SendClientMessage(playerid,0xFFFF00AA, "> CheckPoint 2.");
   DisablePlayerCheckpoint(playerid);
   
   }
   return 1;
}

quand je suis dans le Checkpoint ca me dit aucun message
alors que normalement je devrais avoir le message du SendClientMessage

Savez vous pourquoi ?

Merci
Titre: Re : [TUTO] Les CheckPoints
Posté par: Nikko™ le 13 Mai 2008, 19:02:47
La, je sais pas pourquoi .... Dsl  ;D

++
nikko
Titre: Re : [TUTO] Les CheckPoints
Posté par: Bayshore le 13 Mai 2008, 19:22:04
Yosh !

AU lieu de :

Code: (pawn) [Sélectionner]
SetPlayerCheckpoint(playerid, 1958.3783,1343.1572,15.3746, 4);
Met :

Code: (pawn) [Sélectionner]
Check1 = SetPlayerCheckpoint(playerid, 1958.3783,1343.1572,15.3746, 4);
;)

++
Alexandre
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 13 Mai 2008, 22:15:20
Merci beaucoup ca marche comme ceci

Cordialement,
Titre: Re : [TUTO] Les CheckPoints
Posté par: lepompier le 17 Mai 2008, 11:56:59
moi j'ai uprobleme mon checkpoint reste tous le temps allume sur la mini carte (le radar) comment faire ? merci
Titre: Re : [TUTO] Les CheckPoints
Posté par: Nikko™ le 17 Mai 2008, 12:11:28
Fait un disable check point for player  ;)
Et verifie que tu parle bien du meme chek point

++
nikko
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 17 Mai 2008, 12:28:01
Salut,

Moi j'ai fait come ca pour un un race sur 1 seul checkPoint

   if (Check2) // CheckPoint pour le Race 1
   {
   GameTextForPlayer(playerid,"~w~Tu as gagner", 3000,3);
   SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
   SendClientMessage(playerid, COLOR_WHITE, "Bravo tu as eu le Chechpoint");
   SendClientMessage(playerid, COLOR_WHITE, "Tu as reçu 1000$ sur ton compte");
   SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
   GivePlayerMoney(playerid, 1000);
   KillTimer(compteur);
   DisablePlayerCheckpoint(playerid);
   }
   return 1;
   }

pour avoir le CheckPoint tu fait

Check2 = SetPlayerCheckpoint(playerid, x, y, z, 7);
ou
Check2 = DisablePlayerCheckpoint(playerid); // Suivant le cas

En tout cas chez moi ca marche pas de toucher 1 checkpoint de le Disable et
re faire un chepoint quand tu roule dessus
Check3 = SetPlayerCheckpoint(playerid, x, y, z, 7);

Mais sinon 1 seul checkpoint ca marche...

Bon courage a toi

Cordialement,
Titre: Re : Re : [TUTO] Les CheckPoints
Posté par: Nikko™ le 17 Mai 2008, 14:30:13
pour avoir le CheckPoint tu fait

Check2 = SetPlayerCheckpoint(playerid, x, y, z, 7);
ou
Check2 = DisablePlayerCheckpoint(playerid); // Suivant le cas

En tout cas chez moi ca marche pas de toucher 1 checkpoint de le Disable et
re faire un chepoint quand tu roule dessus
Check3 = SetPlayerCheckpoint(playerid, x, y, z, 7);

Mais sinon 1 seul checkpoint ca marche...


Tu peux expliquer clairement ce que tu aimerai que ca fasse ??  :dry

++
nikko
Titre: Re : [TUTO] Les CheckPoints
Posté par: inbox le 17 Mai 2008, 15:25:40
Salut,

J'ai deja fait un Topic sur les CheckPoints
http://www.gtaonline.fr/forums/index.php/topic,3744.0.html

ca évite d'en faire trop sur le meme sujet.

Mercid e ton aide :)

Cordialement,
Titre: Re : [TUTO] Les CheckPoints
Posté par: lepompier le 14 Juin 2008, 13:20:47
merci a vous deux et aussi a urban pour son superbe tuto
Titre: Re : [TUTO] Les CheckPoints
Posté par: lepompier le 23 Juin 2008, 15:20:50
Désoler du double poste mais sa serais pour une aide j'aimerais savoir comment faire un checkpoint qui se voit que quand on s'approche de ce checkpoint merci d'avance !  :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: Bayshore le 23 Juin 2008, 17:39:03
Timer + PlayerToPoint (que tu trouveras dans le script PEN1). :happy

Sinon en haut à droite de tes posts tu a un bouton "Éditer" pour éviter les doubles-posts. :)


++
Alexandre
Titre: Re : [TUTO] Les CheckPoints
Posté par: UrbanGhetto le 23 Juin 2008, 18:05:19
Désolé de ne pas répondre souvent sur le forum je suis un peux (beaucoup) occupé ces temps-ci (Menteur  :dry)

Enfin bref, j'en sais vraiment rien car j'utilise des Filterscript pour ce genre de choses mais j'ai quand même une idée.

Comme t'a dit -Alexandre essaye de faire un timer avec un GetPlayerPos. En gros il y à un minuteur qui vérifie toutes les X secondes que le joueur est dans la zone ou pas. Si oui le checkpoint s'affiche, si non tu connais la suite...
Titre: Re : [TUTO] Les CheckPoints
Posté par: lepompier le 23 Juin 2008, 23:13:55
D'accord merci les mecs je vais essayer sa si j'ai un blem je revient :)
Titre: Re : [TUTO] Les CheckPoints
Posté par: garderer le 07 Juillet 2008, 18:17:01
Perso pour mon serveur et éviter les bug regarde on cré un seule variable c'est aussi bien.

http://fight-international.com/forums/index.php?showtopic=139

Dites mois ce que vous en pensez  ???

Edit :

http://pastebin.com/f5a376120

Pour faire plaizir a coco76
Titre: Re : [TUTO] Les CheckPoints
Posté par: Eloctro le 07 Juillet 2008, 18:49:26
La tu fait surtout une pub pour ton site tu aurais donné sa http://pastebin.com/f5a376120 sa nous aurais suffit .
En plus y manque des choses return1; et des paranthèse j'ai corrigé sa

public OnPlayerEnterCheckpoint(playerid)
{
switch(desbomb[playerid])
{
case 1:
{

    //Commande
}
case 2:
{

//commande
}
}

return 1;
}
Voila la pres le reste est pas mâle
Titre: Re : [TUTO] Les CheckPoints
Posté par: S!m le 16 Décembre 2008, 03:46:37
Salut,

désolé de remonté ce "vieux" topic mais je tien à effectué une précision,

comme on peut le voir dans le script de UrbanGhetto :
public OnPlayerEnterCheckpoint(playerid)
LA CALLBACK NE COMPORTE PAS DE PARAMÈTRE CHECKPOINTID, alors tous vos test sur check1, check 2 etc.. ne servent à rien, du moins, pas de la façon dont vous le faites

vous pourriez utiliser un checkpoint streamer comme celui-ci (http://forum.sa-mp.com/index.php?topic=79283.0) ou encore celui-ci (http://forum.sa-mp.com/index.php?topic=69459.0)

pas contre, si vous faites de vous même un "streamer", ce qui serait effectivement recommandé si vous avez peu de checkpoint...
utilisez plutôt la fonction IsPlayerToPoint (comme mentionné plus tôt) ou IsPlayerInArea afin de décider si un joueur peut voir ou non un checkpoint,
dans ce streamer, vous devriez faire une variable informant le script si le joueur voit un checkpoint ou non, à ce moment, le test ne sera plus le même, il serait même possible de faire un streamer qui montre tout simplement le checkpoint le plus près...

bref:

au lieu de faire des tests du genre:
public OnPlayerEnterCheckpoint(playerid)
{
switch(desbomb[playerid])
{
case 1:
{

    //Commande
}
case 2:
{

//commande
}
}

return 1;
}
Pensez plutôt a un test du genre:
public OnPlayerEnterCheckpoint(playerid)
{
if(IsPlayerToPoint(playerid,X,Y,Z,DISTANCE))//les paramètres X,Y,Z pourraient provenir d'un tableau de données et distance devrait être une constante défini au haut du script
{
....
}else if(IsPlayerToPoint(playerid,X,Y,Z,DISTANCE))
}
...
}
return 1;
}

P.S. un tableau de donnéee serait un code du genre:

enum CHECKPOINT_ENUM
{
Float:X,
Float:Y,
Float:Z,
Float:Taille,//le rayon(ou diamètre) du checkpoint
Float:Distance,//distance pour le voir
}
new CheckpointList[][CHECKPOINT_ENUM] = {
{123.32,432.12,3.231,12,250},//checkpoint ID 0
{123.32,432.12,3.231,12,250},//CheckPoint ID 1
{123.32,432.12,3.231,12,250},//.....
{123.32,432.12,3.231,12,250}
};
new PlayerCheckpointID[MAX_PLAYERS];

new TimerCheckStreamer;
forward StreamCheck();

public OnGameModeInit()
{
TimerCheckStreamer = SetTimer("StreamCheck",1000,1);
return 1;
}

public OnGameModeExit()
{
KillTimer(TimerCheckStreamer);
return 1;
}

public StreamCheck()
{
for(new i; i<MAX_PLAYERS; i++){
if(IsPlayerConnected(i)){
for(new o; o<sizeof(CheckpointList);o++){
if(IsPlayerToPoint(i,CheckpointList[o][X],CheckpointList[o][Y],CheckpointList[o][Z],CheckpointList[o][Distance]){
CreatePlayerCheckPoint(i,CheckpointList[o][X],CheckpointList[o][Y],CheckpointList[o][Z],CheckpointList[o][Taille]);
PlayerCheckpointID[i] = o;
break;//on stoppe la seconde boucle
}
}
}
}
}

//ET FINALEMENT

public OnPlayerEnterCheckPoint(playerid)
{
if(PlayerCheckpointID[playerid] == ...)
{
.....
}
......
return 1;
}

en espérant que le code fonctionne ou presque (composé sur le forum)

++Sim++
Titre: Re : [TUTO] Les CheckPoints
Posté par: darklp23 le 16 Janvier 2012, 20:57:22
Bonjour j'ai besoin d'aide avec un de mes métiers, celui de la job du fermier,je voudrais que quand ils arrive au checkpoint 22 sa retourne au 1 et en continue a place de terminer comme sa je peut faire la job tout le temps sans attendre au prochain paycheck.Comment est-ce que je peut faire sa? j'avais penser a enlever le disabledcheckpoint mais quoi mettre a la place sa j'ai pas trouver.Merci d'avance et bonne journée a vous.


case 21:
                 {
                     SetPlayerCheckpoint(playerid, -376.7750,-1437.6874,25.7266, 5.0);
                     if(JustStarted[playerid] != 0)
                        {
                           JustStarted[playerid] = 0;
                   }
               }
               case 22:
                 {
                     DisablePlayerCheckpoint(playerid);
                     TogglePlayerControllable(playerid, 0);
                        new cashes=(random(35-10)+100);
                        format(string, sizeof(string), "Utilisez /sortir pour sortir. Vous gagnez %d$",cashes);
                       SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                       SafeGivePlayerMoney(playerid, cashes);
               }
              }
              FarmerPickup[playerid][0]++;
              PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
          }
      }
      return 1;
Titre: Re : [TUTO] Les CheckPoints
Posté par: Xartrick le 16 Janvier 2012, 21:19:43
On ne peut pas t'aider avec juste cette portion de code, montre nous tout ce qui concerne ceci en séparent correctement les différentes parties du code.

PS: Pense à utiliser la balise code.
PS2: Ne fait pas l'erreur de poster un code trop grand sur le forum.
Titre: Re : [TUTO] Les CheckPoints
Posté par: darklp23 le 16 Janvier 2012, 21:33:23
Okay mais il a 22 cases donc je vais devoir montrer le début et la fin tout simplement ce sont les meme code que un 2ieme monde.Desoler j'ai enlever les parathese et les espace pour que le code soit moins gros. sa part de ceci et sa continue jusqu'au case 22 comme mon message précédant.J'aimerais que apres le 22 case sa recommence au case 1

P.s Comment étuliser la balise code le mien donne sa.

if(FarmerVar[playerid] == 1)
       if (IsPlayerInAnyVehicle(playerid))
          new carid = GetPlayerVehicleID(playerid);
          //new cash=(random(70-20)+50);
          if(IsAHarvest(carid))
              switch(FarmerPickup[playerid]
                  case 0:
                     SetPlayerCheckpoint(playerid, -205.9348,-1332.2749,10.4056, 5.0);
                     if(JustStarted[playerid] != 0)
                           JustStarted[playerid] = 0;
               case 1:
                     SetPlayerCheckpoint(playerid, -376.7750,-1437.6874,25.7266, 5.0);
                     if(JustStarted[playerid] != 0)
                           JustStarted[playerid] = 0;
               case 2:
                     if(JustStarted[playerid] != 1)
                            new cashes=(random(15-10)+50);
                            format(string, sizeof(string), "Vous gagnez %d$",cashes);
                           SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                           SafeGivePlayerMoney(playerid, cashes);
                     else
                         JustStarted[playerid] = 0;
                     SetPlayerCheckpoint(playerid, -548.5396,-1329.0653,19.6210, 5.0);
Titre: Re : [TUTO] Les CheckPoints
Posté par: Xartrick le 17 Janvier 2012, 18:43:39
Tu ne connait apparemment pas l'existence des blocs d'instructions (encadrés par des accolades).