GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [StAfF]MaN le 28 Mai 2008, 17:42:52

Titre: Action dans une zone
Posté par: [StAfF]MaN le 28 Mai 2008, 17:42:52
Salut tout le monde ^^ Voila j'ai créé un petit mode counter, qui n'est pas fini, mais voila, j'ai un prob quand le player terroriste qui a la bombe rentr dans la zone de bombardement :

public OnPlayerCommandText(playerid, cmdtext[])
{
    new name[MAX_PLAYER_NAME];
    new texte[256];
    new erreur[256];
   
if (strcmp(cmdtext, "/aide", true)==0)
{
    SendClientMessage(playerid, COLOR_YELLOW, "Les Terrorists doivent planter la bombe à l'endroit prévu et tuer les Anti-T");
SendClientMessage(playerid, COLOR_YELLOW, "Les Anti-Terroristes doivent défendre la site de bombe et tuer les Terroristes");
return 1;
}

else if (strcmp(cmdtext, "/lost", true) ==0)
{
if(gTeam[playerid] == TEAM_CT)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Protège la zone de bombardement !!");
SetPlayerPos(playerid, -1265.6532,2425.5444,86.1919);
lost[playerid] = 1;
return 1;
}else{
    if(gTeam[playerid] == TEAM_T)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo)", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
}else{
if(gTeam[playerid] == TEAM_T_BOMB)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo)", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
    bomb[playerid] = 1;
}
return 1;
}
}
}
    format(erreur, sizeof (erreur), "Commande invalide",cmdtext);
    return SendClientMessage(playerid,COLOR_RED, erreur);
}

public OnPlayerEnterGangZone(playerid) // public que j'ai créé
{
    if(IsPlayerInArea(playerid,-1337.3512, 2536.4910, -1283.4917, 2540.2971))
    if(bomb[playerid] == 1)
{
    SetTimer("counter", 2000, 1);
}
return 1;
}

public counter()
{
   new playerid;
   new Float: x, Float: y, Float: z;
   GameTextForAll("~r~Bombe en place !!", 2000, 3);
   SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 1 minute !!");
   GetPlayerPos(playerid, x, y, z);
   bomb[playerid] = 0;
   CreateObject(1252, x, y, z, 0.5, 0.5, 0.5);
   SetTimer("explose", 60000, 1);
   return 1;
}

public explose()
{
   new Float: x, Float: y, Float: z;
   new playerid;
   DestroyObject(1252);
   GetPlayerPos(playerid, x, y, z);
   CreateExplosion( x+1, y+2, z+0.5, 12, 10.0);
   return 1;
}

Voila, le player qui a la bombe rentre dans la zone, mais rien ne se passe .... Vous n'avez pas une idée ? ^^
Titre: Re : Action dans une zone
Posté par: Nikko™ le 28 Mai 2008, 17:45:03
Ne serai-ce pas un parti du mode counter deja créé ??

++
nikko
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 28 Mai 2008, 17:46:30
je m'en suis inspiré c'est vrai, mais tout ce qu'il y a dans OnPlayerCommandtext c'est moi qui l'ai fais ;) Le reste j'ai pioché des idées par ci pas là mais bon, ça fonctionne pas trop :s
Titre: Re : Action dans une zone
Posté par: Nikko™ le 28 Mai 2008, 18:46:09
Mais quest ce qui change du monde counter normal ???
++
nikko
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 28 Mai 2008, 18:55:35
Bah en faite,  on pourra choisir la map, et le mode normale fonctionne pas chez moi, il bug dès que je rentre en jeu, alors j'en créé un moi même ^^
Titre: Re : Action dans une zone
Posté par: Nikko™ le 28 Mai 2008, 19:00:50
Ah okkkk

++
nikko
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 28 Mai 2008, 19:04:57
oui et c'est pas tout, dans le mode original, c'est des checkpoint qui permettent de déposer la bombe, or la, c'est une zone, ce qui fait que la bombe peut être placée a un endroit différent a chaque partie ;)

mais voila, il ne fonctionne pas et je voudrais de l'aide !!!! Si ça ne vous dérange  pas de m'aider ;)

merci a++ ^^
Titre: Re : Action dans une zone
Posté par: spykerc8 le 28 Mai 2008, 19:35:10
T'as une erreur d'accolades déjà je pense...

Code: (pawn) [Sélectionner]
public OnPlayerEnterGangZone(playerid)
{
    if(IsPlayerInArea(playerid,-1337.3512, 2536.4910, -1283.4917, 2540.2971)) 
    {
       if(bomb[playerid] == 1)
       {
       SetTimer("counter", 2000, 1);
        }
    }
    return 1;
}
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 28 Mai 2008, 19:39:21
Non y avait pas d'erreur, compilation Ok même sans l'accolade, de plus, avant que je la retire pour essayer elle y était, donc ça ne change rien ... Merci d'avoir essayé ^^
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 29 Mai 2008, 18:17:30
Je UP ce poste car je voudrais bien savoir comment faire quand même ^^ Est ce quelqu'un, comme urban, puisque je me suis servis de sa fonction IsPlayerInAera, pourrait m'aider a trouver comment je peut faire ce que je veut faire ??  :happy
Titre: Re : Action dans une zone
Posté par: feldbrau le 29 Mai 2008, 19:11:32
Jpense que tu devrait plutot utiliser un PlayerToPoint qui prend pas un "cube" mais un cercle sans limite vers le haut. Ca devrait mieu marcher.
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 29 Mai 2008, 19:13:28
Ouis mais je veut pas mettre de checkpoint... Je veut que ce soit dans une zone ^^
Titre: Re : Action dans une zone
Posté par: [StAfF]MaN le 31 Mai 2008, 12:43:47
je re UP ^^ Désolé mais j'aimerais vraiment savoir comment faire ça pour une zone et pas un PlayerToPoint :s

Vous pouvez m'aider ?? (je me suis servis du code a urban IsPlayerInAera)

else if (strcmp(cmdtext, "/lost", true) ==0)
{
if(gTeam[playerid] == TEAM_CT)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Protège la zone de bombardement !!");
SetPlayerPos(playerid, -1265.6532,2425.5444,86.1919);
lost[playerid] = 1;
return 1;
}else{
    if(gTeam[playerid] == TEAM_T)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
}else{
if(gTeam[playerid] == TEAM_T_BOMB)
{
GetPlayerName(playerid, name, sizeof(name));
format(texte, sizeof(texte), "le player %s est entré dans la map de Lost Pueblo", name);
SendClientMessageToAll(COLOR_YELLOW, texte);
SendClientMessageToAll(COLOR_ORANGE, "pour rejoindre le player : /lost");
SendClientMessage(playerid, COLOR_ORANGE, "Dépose la bombe dans la zone de bombardement !!");
SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
GangZoneShowForAll(gang2, 0xFF00004E);
lost[playerid] = 1;
    bomb[playerid] = 1;
return 1;
}
}
}
}

public OnPlayerEnterGangZone(playerid)
{
if(gang2)
{
    if(IsPlayerInArea(playerid, -1283.4917, -1337.3512, 2536.4910, 2540.2971))
{
    if(bomb[playerid] == 1)
{
if(ttard[playerid] == 1)
{
    SetTimer("counter", 2000, 1);
    SendClientMessage(playerid, COLOR_RED, "lol");
    return 1;
}
}
}
}
return 1;
}
                                                j'ai créé ce public


public counter()
{
   new playerid;
   new Float: x, Float: y, Float: z;
   GameTextForAll("~r~Bombe en place !!", 2000, 1);
   SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 1 minute !!");
   GetPlayerPos(playerid, x, y, z);
   bomb[playerid] = 0;
   ttard[playerid] = 0;
   CreateObject(1252, x, y, z, 0.5, 0.5, 0.5);
   SetTimer("explose", 60000, 1);
   return 1;
}

public explose()
{
   new Float: x, Float: y, Float: z;
   new playerid;
   DestroyObject(1252);
   GetPlayerPos(playerid, x, y, z);
   CreateExplosion( x+1, y+2, z+0.5, 12, 10.0);
   return 1;
}

public mort()
{
   new playerid;
   if(lost[playerid] == 1)
{
   TogglePlayerSpectating(playerid, 0);
   gSpectateID[playerid] = INVALID_PLAYER_ID;
   gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
   SetPlayerPos(playerid, -1329.1263,2573.4634,82.2715);
   }
   return 1;
}

^^ Merci d'avance ;)