• 16 Avril 2025, 23:31:18


Auteur Sujet: Modifier une position en prenant en compte un CheckPoint.  (Lu 1730 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Kataklysm

  • Préparez-vous au Kataklysm !
  • *
  • Tueur
  • Préparez-vous au Kataklysm !
  • Messages: 86
    • Voir le profil
Modifier une position en prenant en compte un CheckPoint.
« le: 03 Novembre 2008, 21:31:01 »

Bonjour.

Je suis actuellement en train de travailler sur une grosse modification du script Yrace. Une des choses que je veux changer est le départ.
J'ai donc une question :
Je dispose des coordonnés du premier CheckPoint, j'ai donc modifié le script pour qu'à la commande /join, le joueur soit téléporté avec sa voiture au premier CheckPoint.
Ce que je voudrais, c'est modifier ces coordonnés en fonction de la place du joueur.

Je me sert donc de la variable " Participants " Qui augmente de " 1 " lorsqu'une personne fait /join.
Voici ce que j'ai fait : (Je ne met pas sur le pastebin car c'est un petit code)
if(Participants==0)
{
Participants++;
SetPlayerPos(playerid,RaceCheckpoints[0][0],RaceCheckpoints[0][1],RaceCheckpoints[0][2]);
}

J'aimerais modifier la ligne de la " SetPlayerPos " pour ajouter une certaine distance " x ", " y " et " z ".
Ce qui donnerait en gros cela :
SetPlayerPos(playerid,RaceCheckpoint[0][0]+x,RaceCheckpoints[0][1]+y,RaceCheckpoints[0][2]+z);
Malheureusement je ne sais pas comment faire étant donné que dans SA-MP les coordonnés sont fixées grâce à un point en bas à gauche (ou ailleurs mais le principe est le même) de la map.

Comment puis-je faire pour fixer moi-même ces " x ", " y " et " z " ?

Merci d'avance,
Kataklysm. ;)
Pouet Pouet !

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #1 le: 03 Novembre 2008, 23:34:43 »
SetPlayerPos(playerid,RaceCheckpoints[0][0]+3,RaceCheckpoints[0][1]+3,RaceCheckpoints[0][2]+3);

par exemple ;)
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Kataklysm

  • Préparez-vous au Kataklysm !
  • *
  • Tueur
  • Préparez-vous au Kataklysm !
  • Messages: 86
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #2 le: 03 Novembre 2008, 23:37:23 »

Ba j'avais essayé ça, mais ça marchait pas (et je suis pas con à ce point hein... Lis mon post, c'est exactement ce que j'ai fait...)
Pouet Pouet !

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #3 le: 04 Novembre 2008, 02:06:28 »
ba ouais mais je vois pas trop comment, et j'ai jamais dis que tu étais con...  :closedeyes
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Kataklysm

  • Préparez-vous au Kataklysm !
  • *
  • Tueur
  • Préparez-vous au Kataklysm !
  • Messages: 86
    • Voir le profil
Re : Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #4 le: 04 Novembre 2008, 13:47:41 »
ba ouais mais je vois pas trop comment, et j'ai jamais dis que tu étais con...  :closedeyes

Il doit bien y avoir un moyen. ^^
À la limite, on peut faire un GetPlayerPos sur le premier qui fait /join et modifier cette valeur, mais ça revient au même je pense. ^^
Pouet Pouet !

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #5 le: 05 Novembre 2008, 00:07:29 »
salut,

il faudrait qu'en haut de ton script, tu place :

new Participants;
#define DECALAGE_X 2
#define DECALAGE_Y 2
#define DECALAGE_Z 2

et puis dans ta commande, tu place un truc du genre:

SetPlayerPos(playerid,RaceCheckpoints[0][0]+participants*DECALAGE_X,RaceCheckpoints[0][1]+participants*DECALAGE_Y,RaceCheckpoints[0][2]+participants*DECALAGE_Z);
Participants++;

ou tu peut modifier, mais je crois que c'est pas mal pour le mieux....

++Sim++





Hors ligne gtafan

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #6 le: 05 Novembre 2008, 11:29:12 »



Je me sert donc de la variable " Participants " Qui augmente de " 1 " lorsqu'une personne fait /join.
Voici ce que j'ai fait : (Je ne met pas sur le pastebin car c'est un petit code)
if(Participants==0)
{
Participants++;
SetPlayerPos(playerid,RaceCheckpoints[0][0],RaceCheckpoints[0][1],RaceCheckpoints[0][2]);
}


il y a pas un problème avec "if (Participants==0)" ?
tu incrémente la variable uniquement pour le premier participant ?
quand le premier joueur aura passé la variable à 1, la condition ne se fera plus.

Hors ligne Kataklysm

  • Préparez-vous au Kataklysm !
  • *
  • Tueur
  • Préparez-vous au Kataklysm !
  • Messages: 86
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #7 le: 05 Novembre 2008, 14:04:53 »

En fait, la première condition (if(Participants = 0)) place le joueur normalement, et incrémente Participants pour dire qu'il y a un participant, mais le second aura if(Participants = 1). ;)
Je vais essayer ton truc Sim. ;)
Pouet Pouet !

Hors ligne gtafan

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #8 le: 05 Novembre 2008, 17:37:52 »
je ferais simplement comme-ça:

en haut du FS:
new Participent=0;

dans la commande join:
Participent++;
SetPlayerPos(playerid,RaceCheckpoints[0][0]+ Participent,RaceCheckpoints[0][1]+ Participent,RaceCheckpoints[0][2]+ Participent);
(commande à modifier pour se téléporter directement avec son véhicule, mais j'imagine que tu sais le faire)

puis dans le "public endrace()"
Participent = 0;

(là on se déplace que de 1, je sais pas si c'est assez..)
« Modifié: 05 Novembre 2008, 17:39:53 par gtafan »

Hors ligne Kataklysm

  • Préparez-vous au Kataklysm !
  • *
  • Tueur
  • Préparez-vous au Kataklysm !
  • Messages: 86
    • Voir le profil
Re : Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #9 le: 05 Novembre 2008, 19:26:49 »
je ferais simplement comme-ça:

en haut du FS:
new Participent=0;

dans la commande join:
Participent++;
SetPlayerPos(playerid,RaceCheckpoints[0][0]+ Participent,RaceCheckpoints[0][1]+ Participent,RaceCheckpoints[0][2]+ Participent);
(commande à modifier pour se téléporter directement avec son véhicule, mais j'imagine que tu sais le faire)

puis dans le "public endrace()"
Participent = 0;

(là on se déplace que de 1, je sais pas si c'est assez..)

Mais lisez mon premier post, s'il vous plait !
C'est bien beau d'aider, mais si ça ne répond pas à la question...

Que cherche à connaitre l'échelle utilisé pour fixer les distances par rapport à quelque chose, à une variable et non à un point fixe qui ne change jamais.
Pouet Pouet !

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Modifier une position en prenant en compte un CheckPoint.
« Réponse #10 le: 06 Novembre 2008, 00:28:57 »
salut,

regarde ma réponse....

normalement tout devrait fonctionner, les define qui devraient être en haut du script, tu les modifient pour avoir les valeur que tu veut et puis tu peut décider que si tu as entre  0 et 10 joueurs, tu les décalent seulement dans un direction, puis de 10 à 20, tu les tassent pour les mettre devant etc.... tu fais comme tu veut

++Sim++