Description Ce script va vous permetre de crée facilement des zone soit pour tout les joueur soit pour un joueur
Les fonction:CreateArea(Float:minX, Float:maxX, Float:minY, Float:maxY); // Crée une zone pour tout les joueur, renvoi: l'id de la zone ou INVALID_AREA si le nombre de zone maximal est ateint
DestroyArea(areaid); // Detruire une zone, renvoi: true si la zone a bien été detruite, false si l'id est incorect ou que la zone n'etait pas crée
IsPlayerInArea(playerid, areaid); //Verifie si un joueur est dans la zone 'areaid', renvoi: true si le joueur est dans la zone, false si c'est pas le cas
GetPlayerInArea(playerid); //renvoi: l'id de la zone dans laquel se trouve le joueur, INVALID_AREA si le joueur n'est pas dans une zone
SetPlayerInArea(playerid,areaid); //Place le joueur au centre de la zone 'areaid', renvoi: true si le joueur a bien été placer dans la zone, false si l'id de la zone est incorect ou que la zone n'etait pas crée
// Les fonction suivante renvoi la meme chose que leur equivalent en zone pour tout les joueur
CreatePlayerArea(playerid,Float:minX, Float:maxX, Float:minY, Float:maxY);
DestroyPlayerArea(playerid,areaid);
IsPlayerInPlayerArea(playerid, areaid);
GetPlayerInPlayerArea(playerid);
SetPlayerInPlayerArea(playerid,areaid);
Telechargement V1.0
Instalation - Placer le fichier 'areas.inc' dans votre dossier pawno/include
- Ajouter '#include <areas>' en haut de votre gamemode
- Ajouter 'AR_OnGameModeInit();'
TOUT EN HAUT de la callback 'OnGameModeInit'
- Ajouter 'AR_OnGameModeExit();' dans 'OnGameModeExit'
- Ajouter 'AR_OnPlayerConnect(playerid)'; dans 'OnPlayerConnect'
- Ajouter 'AR_OnPlayerDisconnect(playerid)'; dans 'OnPlayerDisconnect'
- Ajouter en bas de votre script ceci:
public OnPlayerEnterArea(playerid,areaid)
{
return 1;
}
public OnPlayerExitArea(playerid,areaid)
{
return 1;
}
public OnPlayerEnterPlayerArea(playerid,areaid)
{
return 1;
}
public OnPlayerExitPlayerArea(playerid,areaid)
{
return 1;
}
Utilisation Exemple d'utilisation pour une zone pour tout les joueur On crée la variable de la zone en haut du script:
new zonedm = INVALID_AREA; //Toujour initaliser les variable de zone avec INVALID_AREA pour plus de precaution
Ensuite on cree la zone dans OnGameModeInit
zonedm = CreateArea(2043.4329, 2053.2830, 1352.0414, 1364.6141); // Xmin,Xmax,Ymin,Ymax
Ensuite dans OnPlayerEnterArea on va detecter si le joueur entre dans la zone dm comme ceci:
public OnPlayerEnterArea(playerid,areaid)
{
if(areaid == zonedm)// Si la zone dans laquel entre le joueur est la zone de DM qu'on a cree plus haut
{
// Le code a executer quand le joueur entre dans la zone de DM (exemple un message de bienvenu ou bien lui donné les armes corespondante au DM)
}
return 1;
}
On peux aussi detecter quand le joueur sort d'une zone pour lui retirer les armes ou le prevenir qu'il est sorti de la zone (ou bien le replacer dedans aussi) pour cela:
public OnPlayerExitArea(playerid,areaid)
{
if(areaid == zonedm)// Si la zone dans laquel etait le joueur est la zone de DM
{
// le code a executer quand le joueur sort de la zone
}
return 1;
}
Exemple d'utilisation pour une zone pour un joueur uniquement (exemple une zone qui se créera par une commande et qui une fois entrer dans la zone l'empechera de sortir)
En haut du script on crée la variable qui stockera l'id de la zone la diference est que la on doit la cree avec un tableau
new ZoneP[MAX_PLAYERS];
Ensuite il faut bien mettre la valeur INVALID_AREA sur la variable quand il se connecte donc dans OnPlayerConnect on mettra:
ZoneP[playerid] = INVALID_AREA;
Ensuite a l'endroit ou vous le souhaitel on crée une zone sur le joueur de cette facon:
ZoneP[playerid] = CreatePlayerArea(playerid,2043.3358,2052.8030,1391.5140,1407.7013);
Ensuite on detecte l'entée dans la zone de cette facon:
public OnPlayerEnterPlayerArea(playerid,areaid)
{
if(areaid == ZoneP[playerid])// Si la zone dans laquel entre le joueur est la zone qu'on a crée plus haut
{
// Le code a executer quand le joueur entre dans la zone
}
return 1;
}
On peux ensuite aussi detecter le moment ou il sort de la zone de cette facon
public OnPlayerExitPlayerArea(playerid,areaid)
{
if(areaid == ZoneP[playerid])// Si la zone dans laquel etait le joueur est la zone qu'on a crée plus haut
{
// Le code a executer quand le joueur entre dans la zone exemple on peux le replacer dans la zone de cette facon:
SetPlayerInPlayerZone(playerid,areaid);
}
return 1;
}
Voila j'ai tenter d'expliquer au mieux, j'sais que le CreatePlayerArea ne semble pas tres util mais j'me suis dit que sa pouvait toujour servir (exemple pour une prison invisible uniquement sur un joueur et que dé qu'il quiterai cette zone on pourait le replacer dedans , sa ferait une sorte de worldbounds mais sans les mur invisible ^^)
Si vous trouver des bugs prevener moi j'ferait de mon mieux pour corriger