GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: alkatrazz le 23 Mars 2013, 17:41:46

Titre: [résolu] Problème GangZone (couleur)
Posté par: alkatrazz le 23 Mars 2013, 17:41:46
Bonjour a tous,
j'ai un petit problème avec mes gang zones, elles sont invisible, je pense que cela vient des couleur car avec certaines couleurs on les voit et avec d'autres, on ne les voit pas :

[spoiler]
GangZoneShowForAll(gangzone1,0xFFFF0096);//visible

GangZoneFlashForAll(gangzone1,0x33AA3396);//invisible
GangZoneFlashForAll(gangzone1,0xFFFF0096);//invisible
GangZoneFlashForAll(gangzone1,0xFF00FF96);//invisible

GangZoneShowForAll(gangzone1,0x33AA3396);//invisibe
GangZoneShowForAll(gangzone1,0xFFFF0096);//invisible
GangZoneShowForAll(gangzone1,0xFF00FF96);//invisible
[/spoiler]
Titre: Re : Problème GangZone (couleur)
Posté par: Infu le 23 Mars 2013, 17:59:49
Code: (pawn) [Sélectionner]
GangZoneFlashForAll(); // ????

J'ai jamais vu ça Oo

Par contre, la fonction Flash ne sert pas à afficher la zone? Et donc si tu la ré-affiche avec

Code: (pawn) [Sélectionner]
GangZoneShowForAll();
ça risque de faire une confusion je pense
Titre: Re : Problème GangZone (couleur)
Posté par: alkatrazz le 23 Mars 2013, 18:02:10
http://wiki.sa-mp.com/wiki/GangZoneFlashForAll (http://wiki.sa-mp.com/wiki/GangZoneFlashForAll)

C'est pour faire clignoter une zone.
Titre: Re : Problème GangZone (couleur)
Posté par: vincentdu90 le 24 Mars 2013, 15:37:21
Tu appliques toutes tes fonctions sur une seule et même zone ,à savoir gangzone1, donc la dernière (ou première) instruction qui sera lue sera appliquée à ta zone.
Le mieux c'est de créer un tableau de zones.

Code: (Pawn) [Sélectionner]
new Zone[5];

Zone[0] = GangZoneCreate(Xmin,Ymin,Xmax,Ymax);

GangZoneShowForAll(Zone[0],couleur);

//De même pour le reste.
Titre: Re : Problème GangZone (couleur)
Posté par: alkatrazz le 24 Mars 2013, 17:52:26
Je n'ai pas très bien compris ce que tu veux dire mais ceci n'est pas mon code, c'est juste les lignes pour vous montrer dans quel cas sa fonctionne et dans quel cas cela ne fonctionne pas.
sinon, voici le code :

[spoiler]
new gangzone1;

public OnGameModeInit()
{
gangzone1 = GangZoneCreate(2322.6985, -1214.8795, 2351.5972, -1275.1260);
GangZoneShowForAll(gangzone1,0xFFFF0096);
}

public OnPlayerEnterCheckpoint(playerid)
{
if (IsPlayerInRangeOfPoint(playerid, 2.0,  2338.6748,-1244.4506,22.5000))
    {
    if (gTeam[playerid] == Team_GroveStreet && GZone != GroveStreet)
    {
        GangZoneFlashForAll(gangzone1,0x33AA3396);
SetTimerEx("TimerZone1Grove",30000,0,"i",playerid);
GZone = GroveStreet;
    }
           if (gTeam[playerid] == Team_Vagos && GZone != Vagos)
    {
        GangZoneFlashForAll(gangzone1,0xFFFF0096);
SetTimerEx("TimerZone1Vagos",30000,0,"i",playerid);
GZone = Vagos;
    }
   
    if (gTeam[playerid] == Team_Ballas && GZone != Ballas)
    {
        GangZoneFlashForAll(gangzone1,0xFF00FF96);
SetTimerEx("TimerZone1Ballas",30000,0,"i",playerid);
GZone = Ballas;
    }
           CheckPoint[playerid] = GangZone1;
    }
}

forward TimerZone1Grove(playerid);
public TimerZone1Grove(playerid)
{
if (CheckPoint[playerid] == GangZone1)
{
GangZoneStopFlashForAll(gangzone1);
    GangZoneShowForAll(gangzone1,0x33AA3396);
    SendClientMessage(playerid, 0x33AA33AA, "zone capturé avec succé (+5score).");
    SetPlayerScore(playerid, GetPlayerScore(playerid)+5);
    }
}

forward TimerZone1Vagos(playerid);
public TimerZone1Vagos(playerid)
{
if (CheckPoint[playerid] == GangZone1)
{
GangZoneStopFlashForAll(gangzone1);
    GangZoneShowForAll(gangzone1,0xFFFF0096);
    SendClientMessage(playerid, 0xFFFF00AA, "zone capturé avec succé (+5score).");
    SetPlayerScore(playerid, GetPlayerScore(playerid)+5);
    }
}

forward TimerZone1Ballas(playerid);
public TimerZone1Ballas(playerid)
{
if (CheckPoint[playerid] == GangZone1)
{
GangZoneStopFlashForAll(gangzone1);
    GangZoneShowForAll(gangzone1,0xFF00FF96);
    SendClientMessage(playerid, 0xFF00FFFF, "zone capturé avec succé (+5score).");
    SetPlayerScore(playerid, GetPlayerScore(playerid)+5);
    }
}

[/spoiler]
J'espère que je n'ai rien oublier..

PS: tout fonctionne très bien, le seul problème est que l'on ne voit pas les zones :/
Titre: Re : Problème GangZone (couleur)
Posté par: vincentdu90 le 24 Mars 2013, 19:00:36
As-tu essayé de mettre tes GangZoneShowForAll() ailleurs que dans le OnGameModeInit() (je parles des zones initiales) ?
J'avais eu quelques soucis pour l'affichage de mes zones lorsqu'elles étaient créés dans cette callback. Le mieux c'est que tu essayes de les mettre dans OnPlayerConnect() ou OnPlayerSpawn().

PS : Les codes longs sont à poster sous Pastebin.
Titre: Re : Problème GangZone (couleur)
Posté par: Infu le 24 Mars 2013, 19:15:27
Perso les zones je les afficherais uniquement quand le joueur a spawn.
Donc
Code: (pawn) [Sélectionner]
GangZoneShowForPlayer();
Titre: Re : Problème GangZone (couleur)
Posté par: alkatrazz le 24 Mars 2013, 19:46:32
Le problème c'est que si je les met dans " OnPlayerSpawn " , il faut que je définisse une couleur et donc la couleur changera quand le joueur spawn or je veux que la couleur change que lorsque l'on capture la zone.
Titre: Re : Problème GangZone (couleur)
Posté par: Kiloutre le 24 Mars 2013, 20:43:31
Et bien c'est assez simple, il suffit d'utiliser une variable qui contiendra une couleur (couleur qui changera lorsque la zone se fera capturer).
Titre: Re : Problème GangZone (couleur)
Posté par: alkatrazz le 24 Mars 2013, 21:14:50
Merci beaucoup, tout fonctionne parfaitement maintenant  :biggrin: