Bonjour,
#define MAX_AREA 100 //le nombre maximum de lieu
new PlayerInArea[MAX_PLAYERS][MAX_AREA]; // savoir si le joueur est dans une area anti flood
enum MainZone{
Zone_Name[28], Float:Zone_Area[6] };
static const SanAndreasZones[][MainZone] = {
{"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
{"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
}
Ce code de te permet d'identifier les area ou se situe les zones des lieux.
Maintenant tu as juste à intégrer dans un public ou une callback une conditions pour vérifier si le joueur est dans une zone ou pas.
Par exemple dans OnPlayerUpdate
public OnPlayerUpdate(playerid)
{
for(new area=1; area<MAX_AREA; area++)
{
if(IsPlayerInArea(playerid,SanAndreasZones[area][Zone_Area[0]],SanAndreasZones[area][Zone_Area[1]],SanAndreasZones[area][Zone_Area[2]],SanAndreasZones[area][Zone_Area[3]],SanAndreasZones[area][Zone_Area[4]],SanAndreasZones[area][Zone_Area[5]],SanAndreasZones[area][Zone_Area[6]])// Attention tu doit avoir la fonction isplayerinarea ou si tu as le streamer de Incognito tu peut utiliser isplayerindynamicarea que tu doit crée avant dans ongamemodeinit !
if(PlayerInArea[playerid][area] == 0)
{
GameTextForPlayer(playerid,SanAndreasZones[area][Zone_Name],3000);//Après tu peut personnaliser ton texte via un format
PlayerInArea[playerid][area] = area+1;
break;
}
else if(area != PlayerInArea[playerid][area]-1)//Juste pour te donner une idée, mais concrètement c'est un peu plus compliqué pour vider le cache de cette variable.
{
PlayerInArea[playerid][area] = 0;
}
}
}
}
Ce code à était réaliser sur le forum est donc en aucun tester, c'est tout simplement pour t'orienter de la démarche à suivra aprés tu as des filterscript qui gère cela.
Bonne Chance à toi.
Malak++