• 16 Mai 2024, 10:30:10


Auteur Sujet: [TUTO] Fonction IsPlayerInArea  (Lu 14007 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : [TUTO] Fonction IsPlayerInArea
« Réponse #30 le: 21 Octobre 2008, 19:56:38 »
Si peut être ^^ mais en faite, moi je veut que quand je rentre dans la zone il y est un message, le texte "lol" et la commande c'était pour essayer d'une autre façon parce que comme j'avais fais avant ça ne fonctionnais pas

Le prob, c'est que je me téléporte dans la zone avec la commande et que même si je sort de la zone et que je re rentre dedans le message ne s'affiche toujours pas ....

Aussi mon playerToPoint n'est pas un carré mais un rectangle... enfin normalement xD je vais enlever le -1283.... et mettre 1283.. a la place :p

Pleas help me ;)
thx :p
« Modifié: 21 Octobre 2008, 20:59:19 par [StAfF]mAn »
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [TUTO] Fonction IsPlayerInArea
« Réponse #31 le: 22 Octobre 2008, 14:10:50 »
C'est évident, regardes la définition de PlayerToPoint, elle demande un rayon (radi), un X, un Y et un Z.
Dans ton script, tu passes à cette fonction des valeurs qui n'ont rien à voir (x1, y1 et x2 de ta zone).

En fait, la fonction PlayerToPoint (radi, X, Y, Z) permet de savoir si le joueur est dans un sphère (donc en 3 D) de centre (X, Y, Z) et de rayon radi.

Pour ce que tu veux faire, il faut utiliser IsPlayerInArea, fonction à laquelle tu pourras passer les coordonnées de ta zone de gang.

Mais attention, si tu prends la fonction IsPlayerInArea et la fonction GangZoneCreate, les coordonnées ne sont pas du tout dans le même ordre dans les deux fonctions donc il faut prendre son temps pour faire les correspondances entre les coordonnées correctement.

IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y);
GangZoneCreate(Float:minx, Float:miny, Float:maxx, Float:maxy);

++
Syg
Courtesy of GtaManiac

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : [TUTO] Fonction IsPlayerInArea
« Réponse #32 le: 22 Octobre 2008, 14:30:53 »
Tu me sauve la vie ^^ merci Syg !!!  :P

Edit : j'ai fais ça :

forward OnArea(playerid);
new Area;
new Area2;
new gang2;


stock IsPlayerInArea(playerid,Float:max_x,Float:min_x,Float:max_y,Float:min_y)
{
new Float:X;
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z); // On récupére la position du joueur
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) { // Si le joueur est dans les cordonnées à définir
return 1;
}
return 0;
}


public OnGameModeInit()
{
        gang2 = GangZoneCreate(-1337.3512, 2536.4910, -1283.4917, 2540.2971);
return 1;
}


public OnPlayerSpawn(playerid)
{
   GangZoneShowForAll(gang2, COLOR_RED);
   Area = SetTimer("OnArea",100,1);
   return 1;
}



public OnPlayerCommandText(playerid, cmdtext[])
{
   if(IsPlayerInArea(playerid,-1283.4917, -1337.3512, 2540.2971, 2536.4910))
   {
      if(!strcmp(cmdtext,"/zone", true))
      {
         //SetPlayerPos(playerid,-1337.3512, 2536.4910, -1283.4917);
     SendClientMessage(playerid, COLOR_RED,"Bonjour !!");
     return 1;
      }
   }
   else
   {
      SendClientMessage(playerid, COLOR_RED, "tu n'est pas dans la zone !!!");
      return 1;
   }
   return 1;
}

public OnArea(playerid)
{
   if(IsPlayerInArea(playerid,-1283.4917, -1337.3512, 2540.2971, 2536.4910))
   {
      SendClientMessage(playerid, COLOR_YELLOW, "Tu peut taper /zone");
      KillTimer(Area);
      KillTimer(Area2);
      Area2 = SetTimer("OnArea", 3000, 1);
      return 1;
   }
   else if(!IsPlayerInArea(playerid,-1283.4917, -1337.3512, 2540.2971, 2536.4910))
   {
      KillTimer(Area2);
      Area2 = SetTimer("OnArea", 3000, 1);
  return 1;
   }
   return 1;
}

J'explique le fonctionnement :

On spawn il y a la gangzone qui apparait sur la minimap, quand on va dedans un message nous dit "tu peut taper /zone"
On tape /zone et le message apparait
Si on tape zone en dehors  de la zone, le message "tu n'es pas dans la zone !!!" apparait

voila c'est tout con ^^ Et ça marche ^^

il faut 2 timer, un pour l'amorçage et l'autre pour le maintient ;) Ingénieux :p J'suis content de moi ^^  :king

« Modifié: 22 Octobre 2008, 18:33:38 par [StAfF]mAn »
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|