Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Connexion avec identifiant, mot de passe et durée de la session

 
avancée

254698 Messages dans 14037 Fils de discussion- par 6619 Membres - Dernier membre: djalal

23 Mai 2012 à 15:24:02
GTAOnline.frSan Andreas MultiplayerScripting SA-MP [Pawn center]Tutoriels et références SA:MP (Modérateurs: S!m, Xartrick)[TUTO] Les CheckPoints
Pages: 1 2 3 [4]   Bas de page
Imprimer
Auteur Fil de discussion: [TUTO] Les CheckPoints  (Lu 4174 fois)
0 Membres et 3 Invités sur ce fil de discussion.
UrbanGhetto
Hors ligne Hors ligne


GTAOnline Addict
*

I PWN You !

Messages: 931


WWWUrbanGhetto

« Répondre #45 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...
Journalisée


˙·٠•● Je dis, mieux vaut toucher à un clavier qu'a de la drogue | Le meilleur topic du forum | Ce que j'ai fait a fait de moi ce que je suis ●•٠·˙
lepompier
Hors ligne Hors ligne


Boulet
GTAOnline Big Member
*

Messages: 422


« Répondre #46 le: 23 Juin 2008 à 23:13:55 »

D'accord merci les mecs je vais essayer sa si j'ai un blem je revient Sourire
Journalisée
garderer
Hors ligne Hors ligne

Tueur en série
*

Messages: 271


« Répondre #47 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  Huh?

Edit :

http://pastebin.com/f5a376120

Pour faire plaizir a coco76
« Dernière édition: 07 Juillet 2008 à 20:02:09 par garderer » Journalisée
Eloctro
Pawno Fan
Hors ligne Hors ligne


GTAOnline Addict
*

I Love Pawno !

Messages: 805


WWW
« Répondre #48 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

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

    //Commande
}
case 2:
{

//commande
}
}

return 1;
}
Voila la pres le reste est pas mâle
Journalisée

S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #49 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 :
Code:
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 ou encore celui-ci

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:
Code:
public OnPlayerEnterCheckpoint(playerid)
{
switch(desbomb[playerid])
{
case 1:
{

  //Commande
}
case 2:
{

//commande
}
}

return 1;
}
Pensez plutôt a un test du genre:
Code:
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:

Code:
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++
« Dernière édition: 16 Décembre 2008 à 03:49:04 par Sim » Journalisée





darklp23
Hors ligne Hors ligne

Petit nouveau
*

Messages: 5


« Répondre #50 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;
Journalisée
Xartrick
Hors ligne Hors ligne


Moderateur
GTAOnline Addict
*

C & Pawn Programmer

Messages: 1206


WWW
« Répondre #51 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.
Journalisée

darklp23
Hors ligne Hors ligne

Petit nouveau
*

Messages: 5


« Répondre #52 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.

Code:
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);
Code:
« Dernière édition: 16 Janvier 2012 à 22:52:37 par darklp23 » Journalisée
Xartrick
Hors ligne Hors ligne


Moderateur
GTAOnline Addict
*

C & Pawn Programmer

Messages: 1206


WWW
« Répondre #53 le: 17 Janvier 2012 à 18:43:39 »

Tu ne connait apparemment pas l'existence des blocs d'instructions (encadrés par des accolades).
Journalisée

Pages: 1 2 3 [4]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.446 secondes avec 23 requêtes.
Forum GTAOnline.fr 2.0 | Design par : Lalu et GtaManiac
Merci a toute la communaute pour son support !
Copyright © 2004-2012 - GTAOnline.fr | GTAPro.com | Contact