GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: MrFredo le 02 Novembre 2007, 22:03:01
-
Salut , Se serait pour vous demander de l'aide , je vous explique mon probleme
Enfet j'aimerai que quand un joueur entre dans une zone autour d'un certain objet le mouvement de l'objet s'active
mais je ne sais pas du tout comment realiser sa alor si vous pourier m'aider sa serait bien gentil
je precise que je ne veux pa un code tout fait mais les fonction a utiliser et quelque explication pour realiser sa
++
Fred
-
tu crée un nouveau public :
public zoneobjet()
{
new i, j, Float:X, Float:Y, Float:Z;
for (i = 0, j = MAX_PLAYERS; i < j; i++) {
GetPlayerPos(i, X, Y, Z);
if(X <= -1134.14 && X >= -1431.14 && Y <= 832.19 && Y >= 2312.37) // tu change les coordonnées
MoveObject(objectid,X,Y,Z,vitesse);
}
}
oublie pas le forward zoneobjet()
et le timer en haut de ton script ;)
++
R@f
PS : je sais pas si se code est juste, je viens de le faite
-
j'ai eseyer j'ai mis mes position et tout mais sa marche pas :s
-
Dans OnGameModeInit rajoute un timer :
SetTimer("zonobjet",100,1);
pour que toutes les 0.1 secondes cela fasse bouger l'objet si un joueur est dans la zone.
-
Surtout un timer qui relance la vérification de la zone sinon ta fonction ne sert à rien...xD
-
lu tlm
je ne trouve pas la page wiki pour la fonction move objet
je ne comprend pas bien ou je doit mettre le "code"
Code:
forward zoneobjet()
-
Ce code la tu le met en haut de ton GM avec tout les new, define ...
AK NV.
-
ok merci
a toi ArseniK
et a tout les autre pour leur information
-++
-
mais là l'objet ne va pas bouger même si le joueur n'est pas à côté ?
-
Avec cette ligne :
if(X <= -1134.14 && X >= -1431.14 && Y <= 832.19 && Y >= 2312.37),
l'objet ne bougera jamais !!!
Effectivement, Y ne peut pas être à la fois plus petit que 832 ET plus grand que 2312 !!!
Donc il faut faire très attention à la défintion de la zone sinon, plus rien ne marche.
Quand à la fonction MoveObject, elle est très délicate à utiliser à cause du paramètre vitesse :
MoveObject (objectid, X, Y, Z, vitesse);
où:
objectid -> Identifiant de l'objet (valeur retournée par la fonction CreateObject)
X, Y, Z -> Nouvelles coordonnées à atteindre (attention, ce ne sont pas des coordonnées relatives)
vitesse -> Vitesse de déplacement de l'objet (je ne connais pas l'unité mais je pense que ce sont des m/s). Plusieurs essais sont nécessaires pour arriver à la bonne valeur.
++
Syg
-
Salut, J'ai fait tout se que vous m'avez dit de faire mais l'objet ne bouge toujour pa :(
++
Fred
-
fait bien attention aux coordonnées ! moi pour ma zone admin j'avais ce problème avant, je pensais que le code était faux mais c'était seulement les "coords", donc essaye plusieurs coordonnées
++
R@f
-
Saluuut! , Je suis heureux grace a vous lol!!!
Grace a vous j'ai reusi a faire que ma grille s'ouvre toute seule si un flic s'aproche et se referme si il s'eloigne
En Effet c'etait bien les cordoonee le probleme enfet c'etait les cordoonee negative sur lequel je m'etait gouré
C en reflechisant que j'ai compris mon probleme j'avait mit que ma zone devait etre inferieur a -1646.3911 et superieur a -1630.5466
Mais ensuite je me suis rapeler que c'etait dans le negatif donc il fallait faire l'inverse ^^
En tout cas un grand merci a vous :)
Maintenant je me lance dans la creation d'un trajet fait en race checkpoint pour les chaufeur de bus quand il prene leur service il auront
un trajet a suivre et sur le chemin si il ya des gens au arret de bus il doivent s'areter et les faire monter
puis si un pasager veux desendre au prochain arret il fait une comande du genre /arret comme sa au prochain checkpoint le bus s'arete
obligatoirement pdt un delai de 5 seconde par exemple ^^
-
Salut Syg , Pourrais tu me dire comment trouvé ces coordonnée :
if(X <= -1134.14 && X >= -1431.14 && Y <= 832.19 && Y >= 2312.37),
Merci !
Katalistix.
-
moi je l'avais fait avec X-Treme San Andreas Multiplayer Ultimate Visual Mapper et j ai mis les coordonnées au suivant ce qui correspond (si sa marche pas vérifie les coords ;) )
Télécharger X-Treme San Andreas Multiplayer Ultimate Visual Mapper (http://forum.sa-mp.com/index.php?topic=14702.0)
++
R@f
-
Premièrement, ce n'est pas moi qui est trouvé ces corrdonnées, c'est R@f et il vient de t'expliquer comment les trouver.
Deuxièmement, le bout de code que tu cites ne doit pas être utilisé, comme je l'ai dit dans mon premier post.
++
Syg
-
Oui je suis d'accord , mais si je dois selectionné mon emplacement c'est trop petit.. :blink
-
Utilise le lien dans ma signature SA-MP Coord Picker
Je doit préciser que tu peut pas prendre les position en étant sous SA-MP, Lance ton jeu solo et fait ce qu'il y a ecrit ;)
-
Salut ,
J'essaye de faire une grille qui s'ouvre quand on passe devant avec se qui est ecris plus haut mais quand je v a coter de ma grille elle bouge pas ...
Pourtant mes coordonés sont bonne, je n'arrete pas de verifier, je trouve pas l'erreur
Je suis partis d'un Blank Script il faut peut etre definir quelque fonction?
et Sinon g un warning : warning 217: loose indentation
et cette ligne c'est :
public zoneobjet()
{
new i, j, Float:X, Float:Y, Float:Z;
for (i = 0, j = MAX_PLAYERS; i < j; i++) { <=Ici
GetPlayerPos(i, X, Y, Z);
if(X <= 2030.0908 && X >= 2020.0908 && Y <= 1345.0281 && Y >= 1340.0281){ // tu change les coordonnées
MoveObject(objet, 2026.0908,1345.0281,10.8203, 2.00 );
}
}
}
J'ai mis mon GM en Pastebin : http://pastebin.gtaonline.fr/pastebin.php?show=255
-
Personne ne peu m'aider svp? je ne trouve vraiment l'erreur :(
(dsl pour le double post)