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
-
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]
-
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
GangZoneShowForAll();
ça risque de faire une confusion je pense
-
http://wiki.sa-mp.com/wiki/GangZoneFlashForAll (http://wiki.sa-mp.com/wiki/GangZoneFlashForAll)
C'est pour faire clignoter une zone.
-
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.
new Zone[5];
Zone[0] = GangZoneCreate(Xmin,Ymin,Xmax,Ymax);
GangZoneShowForAll(Zone[0],couleur);
//De même pour le reste.
-
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 :/
-
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.
-
Perso les zones je les afficherais uniquement quand le joueur a spawn.
Donc
GangZoneShowForPlayer();
-
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.
-
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).
-
Merci beaucoup, tout fonctionne parfaitement maintenant :biggrin: