• 07 Juin 2026, 00:15:03


Auteur Sujet: Problème avec ma zone DM [RESOLU]  (Lu 1613 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Sismix84

  • *
  • Tueur en série
  • Messages: 247
    • Voir le profil
Problème avec ma zone DM [RESOLU]
« 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.
« Modifié: 25 Janvier 2008, 15:59:41 par Sismix84 »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème avec ma zone DM
« Réponse #1 le: 24 Janvier 2008, 11:49:27 »
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
Courtesy of GtaManiac

Hors ligne Sismix84

  • *
  • Tueur en série
  • Messages: 247
    • Voir le profil
Re : Problème avec ma zone DM
« Réponse #2 le: 24 Janvier 2008, 12:09:12 »
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.
« Modifié: 24 Janvier 2008, 12:10:53 par Sismix84 »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème avec ma zone DM
« Réponse #3 le: 24 Janvier 2008, 14:52:26 »
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
Courtesy of GtaManiac

Hors ligne Sismix84

  • *
  • Tueur en série
  • Messages: 247
    • Voir le profil
Re : Problème avec ma zone DM
« Réponse #4 le: 25 Janvier 2008, 07:16:57 »
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.