GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ApocKalipsS le 26 Janvier 2008, 18:43:54
-
Alors encore et encore Boujours,
J'ai plusieurs questions :
•Comment prendre les coordoné d'une zone dans un interieur ?
•Comment mettre un objet et savoir c'est coordoné dans un interieur ?(Pour faire un MoveObject)
•Comment l'ancer une action si on est à COTER du joueur auquel on doit lancer l'action ?
Voila SVP répondez-y ! :D
Merci d'avance
-
Lu,
1- type /interior pour l'id de l'interieur et /save pour la position
2- Pareil que la 1
3- Pas compris !
NV.
-
Native pour la 1 et la 2 ça je sais, moi ce que je veux c'est mettre un OBJET et une ZONE (description de Zone = un caré qui ce situe dans un interrior où l'ont peux par exemple taper une commande.)
et savoir les coordoné de l'objet
Pour la 3) =
Si je doit donner une amende à quelqu'un, il faut que je sois au moins à 20Mètres de lui....
Compris ? :P
-
Pour 1 et 2 suffit juste de la pos pa besoin de faire que sa soit dans un interieur sa i sera tout seul tu prend la pos et c tout ;)
-
Avec le /save ? Mais pour les zone aussi je vois pas trop bien...
Parcequ'il faut Max_X Min_X Max_Y Min_Y et dans le /save il n'y à que 3Coordoné...
-
Bon j'ai reussi pour l'objet (en 1Heure !) mais pour la zone... pas compris 0_o
-
Une zone c est pas ta position.
Je pense que tu doit faire 4 /save aux 4 coin de la maison.
Après je ne c est pas quelle coordonné prendre.
-
Ah oui pas bête je prend les coordoné X l'autre X le Y et l'autre Y
-
Oui mais je ne suis pas sur. :D
-
if (!strcmp(cmd, "/prison", true))
{
new message[127];
new pid, tmp[256], tmpp[256];
tmp = strtok(cmdtext, idx);
tmpp = strtok(cmdtext, idx);
if(IsPlayerFlic == 1)
{
if (IsPlayerInArea(playerid,188.1826, 188.1824, 180.7640, 177.3943)) { // max_x, min_x max_y, min_y
if (!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /prison [playerid] [Secondes]");
return 1;
}
pid = strval(tmp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "Ce joueur n'est pas connecter !");
return 1;
}
new Second = strval (tmpp);
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmp, sizeof(tmp), "Tu as mit en prison : %s (ID:%d) pour %d secondes",pidName,pid,Second);
SendClientMessage(playerid, 0xAA3333AA, tmp);
SetPlayerInterior(pid,3);
SetPlayerPos(pid,197.9693,175.3055,1003.0234);
SetPlayerFacingAngle(pid, 358.9875);
SetCameraBehindPlayer(pid);
SetPlayerArmour(pid,0);
ResetPlayerWeapons(pid);
GetPlayerName(playerid, message, sizeof(message));
SendClientMessage(pid, COLOR_RED, "%s t'as mit en prison !", playerid);
SetTimerEx ("Unjail", Second*1000, 0, "i", pid);
}else if(IsPlayerFlic == 0){
SendClientMessage(playerid, COLOR_GREY, " Tu n'est pas policier !");
}
}else{
SendClientMessage(playerid, COLOR_GREY, " Tu doit être à coter de la prison pour mettre quelqu'un dedans !");
}
return 1;
}
Voila mon script, il ne marche pas :
Je ne suis pas "flic" et ca me dit "Tu doit être à coter de la prison etc..."
Quand je suis logué en "flic" et je ne suis pas à coter de la zone, ca me marque rien ca fait rien du tous. Je suis dans la zone et ca me fait rien du tous non plus....
-
J'aimais fai de zone désolé je peu pas t'aider...
Sinon estc e qu'il y a des erreurs ou le code est bon mais ne fonctionne pas ??
-
Le code est bon mais fonctionne pas (il marche seulement sans les zones...)
-
Peux etre que c'est tes coordonnee qui sont incorect ;)
-
Je pense que ta zone n'est pas correcte, il y a 2 millimètres d'écart entre ton Xmax et ton Xmin (188.1826 - 188.1824 = 0.002 !!). Il faut vraiment bien être positionné pour que ça fonctionne.
Pour prendre les coordonnées d'un zone, il suffit de deux positions (deux /save) :
- Le coin supérieur gauche de la zone (Xmin, Ymin et on se fiche du Z)
- Le coin inférieur droit de la zone (Xmax, Ymax et on se fiche du Z)
NB : Dans GTA, l'axe des X est orienté de gauche à droite (Ouest->Est) et l'axe des Y de haut en bas (Nord -> Sud).
++
Syg
-
NB : Dans GTA, l'axe des X est orienté de gauche à droite (Ouest->Est) et l'axe des Y de haut en bas (Nord -> Sud).
++
Syg
Avant en arrière plutôt, C'est le Z qui est haut en bas.
-
/save là
\/___
|***|
|***|
|___|
***/\ /save là
C'est pas très compréhensible m'enfin... c'est comme ça ?
-
Merci Lepro, c'est le dessin que j'ai eu la flemme de faire.
Sinon, Urban, quand je disait de haut en bas (Nord/Sud), c'est sur la carte (qui est en 2D).
D'ailleurs, en 3D, l'axe Z qui est orienté de bas en haut (et non pas de haut en bas).
++
Syg