GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Romeo_Urbano le 12 Juillet 2010, 14:53:33

Titre: Une petite question
Posté par: Romeo_Urbano le 12 Juillet 2010, 14:53:33
Bonjour,

Un jour j'ai demander de l'aide pour un code pour que si je fais la commande /kill tous ceux qui sont a proxy de 50 meurt et chneubeul ma donner ca et ca marchait!

new Float:PX,Float:PY,Float:PZ;
   GetPlayerPos(playerid, PX, PY, PZ);
   for(new i = 0; i<MAX_PLAYERS; i++)
   {
if(IsPlayerInRangeOfPoint(i, 50.0, PX, PY, PZ))
{
SetPlayerHealth(i, 0);
}
   }

Mais maintenant au lieux de tuer tous ceux qui sont accoter de celui qui a utiliser la cmd je voudrai que tous ceux par ex qui sont accoter d'un objet précis ils meurt:

j'ai déjà essayer ca

Avant

if(IsPlayerInRangeOfPoint(i, 50.0, PX, PY, PZ)) Apres if(IsPlayerInRangeOfPoint(bombe, 50.0, PX, PY, PZ))
PS: Bombe est un objet qu'il ce dépose quand je fais /bombe

dans la cmd /bombe il ya ca :

bombe = CreateObject(1654,posx[playerid],posy[playerid]+1,posz[playerid]-0.8,0,0,0);
Mais ca marche pas svp aidez moi.
Titre: Re : Une petite question
Posté par: cristab le 12 Juillet 2010, 15:42:14
la je pense que le mieux serais de te laisser reflechire un peu car c'est que de la logique est pas une question de script donc reflechit un peu pense comme une histoire ecrit la même si il faut et tu trouveras toi meme aide toi meme du wiki car tu peu connaitre la position d'un object je te laisse chercher .


Je fait sa pour te rendre service ne prend pas sa mechament :)
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 12 Juillet 2010, 15:50:11
Oui mais j'ai déjà réfléchit  et j'ai essayer plein de truc mais pas trouver :(

Citer
j'ai déjà essayer ca :
Avant
Code:

if(IsPlayerInRangeOfPoint(i, 50.0, PX, PY, PZ))
Apres
Code:

Citer
if(IsPlayerInRangeOfPoint(bombe, 50.0, PX, PY, PZ))
Titre: Re : Une petite question
Posté par: cristab le 12 Juillet 2010, 17:25:50
apparement pas

new Float:x, Float:y, Float:z;
GetObjectPos(bombe, x, y, z);
if(IsPlayerInRangeOfPoint(i, 50.0, x,y,z))
je te laisse deviner la suite
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 12 Juillet 2010, 18:34:05
j'ai essayé ca

            new Float:x, Float:y, Float:z;
    GetObjectPos(bombe, x, y, z);
    for(new i = 0; i<bombe; i++)
    {
if(IsPlayerInRangeOfPoint(i, 50.0, x,y,z))
{
SetPlayerHealth(i, 0);
}
    }

et ca

            new Float:x, Float:y, Float:z;
    GetObjectPos(bombe, x, y, z);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
if(IsPlayerInRangeOfPoint(i, 50.0, x,y,z))
{
SetPlayerHealth(i, 0);
}
    }

Mais ca marche pas!
Titre: Re : Une petite question
Posté par: Ssk le 12 Juillet 2010, 18:37:58
le second code devrai fonctionner normalement ^^
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 12 Juillet 2010, 18:42:48
non il marche pas Sasuke :( je me met accoter de l'objet et ca met pas le health 0 après un timer  :wall
Titre: Re : Une petite question
Posté par: Ssk le 12 Juillet 2010, 19:54:50
bombe contient bien l'id de l'objet ?
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 12 Juillet 2010, 22:22:22
Attend je te dis ce que j'ai mis:

if(strcmp("/bombe", cmd, true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pMember]== 9 ||PlayerInfo[playerid][pLeader]== 9)
    {
    if (PlayerInfo[playerid][pRank] > 2)
{
                  tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
          {
    SendClientMessage(playerid, COLOR_GREY, "/bombe < temps en secondes >");
      }
      if(bombeposer[playerid] == 0)
      {
          new valeur1 = strval(tmp);
      valeur1 *= 1000;
      GetPlayerPos(playerid,posx[playerid],posy[playerid],posz[playerid]);
  bombe = CreateObject(1654,posx[playerid],posy[playerid]+1,posz[playerid]-0.8,0,0,0);
  SetPlayerPos(playerid,posx[playerid],posy[playerid],posz[playerid]+0.8);
    ApplyAnimation(playerid,"BOMBER","BOM_Plant_2Idle",4.1,0,1,1,1,1);
  SetTimerEx("timerbombe",valeur1,0, "i", playerid, 1);
  GetPlayerName(playerid, sendername, sizeof(sendername));
  format(string, sizeof(string), "* %s plante une bombe!!", sendername);
  ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
      format(string, sizeof(string), "A TOUTES LES UNITES: Il y a une Bombe deposer par les terroristes. Le planteur a été mis sur votre GPS.");
          SendRadioMessage(3, COLOR_ALLDEPT, string);
          PlayerInfo[playerid][pRequestingBackup] = 1;
  bombeposer[playerid] = 1;
                                               ......................

et ca :

public timerbombe(playerid)
{
    new string[256];
new Float:posx[MAX_PLAYERS];
  new Float:posy[MAX_PLAYERS];
  new Float:posz[MAX_PLAYERS];
  GetObjectPos(bombe,posx[playerid],posy[playerid],posz[playerid]);
    CreateExplosion(posx[playerid],posy[playerid],posz[playerid],10,0);
DestroyObject(bombe);
SendClientMessageToAll(COLOR_GREEN, "|___________ Annonce Des Journalistes ___________|");
  SendClientMessageToAll(COLOR_WHITE, "Bonjour/Bonsoir Une autre Fois sur la Radio De San Fierro, On a une Nouvelle Annonce Pour Vous!!");
  SendClientMessageToAll(COLOR_WHITE, "La bombe a été exploser, espérant qu'il y a pas de blessé!!");
    format(string, sizeof(string), "La bombe a été exploser, Mais vous avez fais du bon boulot.");
    SendRadioMessage(3, COLOR_ALLDEPT, string);
    DisablePlayerCheckpoint(playerid);
bombeposer[playerid] = 0;
{
      new Float:PX,Float:PY,Float:PZ;
    GetPlayerPos(playerid, PX, PY, PZ);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
if(IsPlayerInRangeOfPoint(i, 50.0, PX, PY, PZ))
{
SetPlayerHealth(i, 0);
}
    }
}
return 0;
}

mais moi je veux pas que les joueurs qui sont a proxy du planteur auront le health 0 je veux que ceux qui sont a prox de la bombe auront le health 0 après l'explosion.

Double post
UP Svp!
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 13 Juillet 2010, 13:29:35
Mais dizzy j'ai déjà fais ca, ca les tue pas donc j'essaye de faire le setplayerhealth 0 mais comment je vais le faire
Titre: Re : Une petite question
Posté par: Ssk le 13 Juillet 2010, 13:55:29
SetTimerEx("timerbombe",valeur1,0, "i", playerid, 1);

remplace le par
SetTimerEx("timerbombe",valeur1 * 1000,0, "i", playerid);
j'ai mis *1000 pour convertir en seconde ^^
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 13 Juillet 2010, 15:18:22
Ca marche toujours pas Sasuke :(
Titre: Re : Une petite question
Posté par: Ssk le 13 Juillet 2010, 15:59:17
et
ça
GetPlayerPos(playerid, PX, PY, PZ);par ça

GetObjectPos(bombe, PX, PY, PZ);
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 13 Juillet 2010, 22:49:52
ca marche toujours pas merde :(  :wall  :lmfao

Double post
UP!!!!
Titre: Re : Une petite question
Posté par: Romeo_Urbano le 15 Juillet 2010, 00:35:27
un autre UP, désoler pour les UP mais j'ai vraiment besoin d'aide car le système maintenant est arrêter aidez moi