GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Sismix84 le 24 Janvier 2008, 08:13:54
-
Bonjour a tout les scripteurs :),
J'ai fait ma zone DM mais pour ne pas que les joueurs sortent de la zone j'ai fait ça :
public IsPlayerInDM(playerid)
{
if((DM[playerid] = 1) && (!IsPlayerInArea(playerid,3515.041, 864.1628, 3269.805, 607.495)))
{
new rand = random(sizeof(gRandomPlayerSpawnsDM));
SetPlayerPos(playerid, gRandomPlayerSpawnsDM[rand][0], gRandomPlayerSpawnsDM[rand][1], gRandomPlayerSpawnsDM[rand][2]);
GameTextForPlayer(playerid, "~r~tu n'as pas le droit de ~n~~r~sortir de la zone DM", 3000, 3);
SendClientMessage(playerid, COLOR_GREEN, "Pour sortir de la zone DM, tape [/dm-exit]");
}
return 1;
}
Il n'y a aucune erreur mais dès que je sort de la zone DM rien ne se passe. Je ne vois pas d'où vient le problème.
Merci à tout ce qui pourrons m'aider.
-
En premier lieur, remplace
if((DM[playerid] = 1) && (!IsPlayerInArea(playerid,3515.041, 864.1628, 3269.805, 607.495)))par
if((DM[playerid] == 1) && (!IsPlayerInArea(playerid,3515.041, 864.1628, 3269.805, 607.495)))Double signe égal (=) dans le test.
Mais cette correction ne résoudra pas ton problème.
Explication :
Pour déterminer si un test est vérifié ou pas, chaque élément du test est remplacé par 0 ou 1 puis tous les 0 et 1 sont comparés selon les règles de logiques.
Pour ton test, (DM[playerid] = 1) est systématiquement remplacé par la valeur 1 ce qui fait que cet élément du test ne sert à rien.
Bref, revenons à nos moutons.
Cette fonction doit être appelée dans une boucle elle même contenue dans un timer (car bien évidement, si elle n'est pas appelée, elle ne fera rien).
Voici les questions qu'il faut que tu te poses :
- Lors de l'appel à cette fonction, quelle est la valeur de playerid est correcte ?
- Est-ce que la valeur de DM[playerid] a été renseignée correctement quand le joueur est entré dans le DM ?
- Est-ce que les coordonnées de la zone sont correctes et est-ce qu'elles sont placées dans le bon ordre ?
++
Syg
-
Le DM[playerid] est bien renseigner et les coordonnées de la zone sont correctes, j'ai utiliser le tuto de Urban. Par contre je n'ai pas compris la première question.
-
La première question c'est pour savoir si la variable playerid est renseignée correctement à l'appel de ta fonction.
Sinon, comment est utilisée la fonction IsPlayerInDM, est-ce que tu peux nous montrer la ligne (ou le bout de script) où tu y fais appel ?
++
Syg
-
Je vient de me rendre compte que je n'appellais jamais la fonction, donc j'ai rajouté un timer et ça marche.
Merci pour ton aide.