GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: MrFredo le 02 Juin 2009, 02:08:50
-
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
(http://solidfiles.com/info_imgs/H2AX.jpg) (http://solidfiles.com/d/H2AX)
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
-
Salut,
très bel include vraiment utile, bravo Mr Fredo
++Sim++
-
un gros
GG
pour mr fredo
Encore un include que je vais surement utiliser sur mon lstdm GG
-
merci :p si vous avez des suggestion j'suis preneur ^^
-
conquerire les zones je me doute bien que sa ne seras pas tres simples mais ce serais pas mal
-
Heu na c'est pas trop le but de cette INC, un systeme de conquete de zone peux être fait facilement avec cette INC mais la l'inc a pour but de faciliter la creation de zone pas de les conquerir :s
A la limite tu me donne ptet une idee d'un GM que j'pourait coder avec l'aide de cette INC j'verrai si j'ai le courage de le faire ^^
-
GG l' include =)
-
Heu na c'est pas trop le but de cette INC, un systeme de conquete de zone peux être fait facilement avec cette INC mais la l'inc a pour but de faciliter la creation de zone pas de les conquerir :s
A la limite tu me donne ptet une idee d'un GM que j'pourait coder avec l'aide de cette INC j'verrai si j'ai le courage de le faire ^^
meme idee xD je te dit si j'ai pas la flemme
-
A la limite si tu le fait j't'aiderai car les DM c'pas trop mon truc et j'ai pas trop le courage de le faire completement car j'doit m'occuper de mon serveur XD
File ton msn en MP si tu veux que j't'aide :)
-
Hey Jolie :)
Félicitations MrFredo.
-
Merci ^^
c'est un script tout con enfet mais j'me suis dit que sa pouvait être util pour certain ^^
-
pourais tu le metre le tout en un seul script comme sa le fichier .pwn creer je le metrer dans filterscripts pour le rajouter ensuite sur serveur.cfg :)
si tu peut me faire sa sa serait cool :)