GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: abox le 30 Juillet 2009, 16:20:45

Titre: Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: abox le 30 Juillet 2009, 16:20:45
Bonjour,

Il y a peu, j'ai remarqué que sur mon GM, je n'avais aucune commande pour faire rentrer les gens de force dans un véhicule quand on est conducteur.
Donc j'ai cherché un peu partout pour savoir comment en faire une, par exemple, il y avait un filterscript dont une commande le permettait mais comme par hasard, le lien était mort (le thread aussi d'ailleurs).
Donc je vous demande quelques explications a propos de cette fameuse commande (que seul les membres de factions pourraient utiliser bien sûr).
Ah petites précisions : Il faut être dans la voiture pour l'utiliser et il faut qu'il y ait une place de libre, il faut que le joueur qu'on veut faire rentrer soit assez près du véhicule et il faut faire partie d'une faction.
Merci d'avance a ceux qui répondront.

Cordialement,
Un petit débutant en Pawn =)
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: yah00078 le 04 Août 2009, 14:59:41
Salut , je ne peux pas t'aider , mais c'est vrai que sa pourrais etre interessant pour les "police"

Je surveille =) et cherche de mon coté
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: ApocKalipsS le 04 Août 2009, 18:31:51
Ca se fait pas trop ici de faire donner sans expliquerr, mais bon, je l'ai fait il y a assez longtemps, et j'ai un peu la flemme  :laugh

if(strcmp(cmd, "/envoiture", true) == 0) // by Ellis
{
    if(IsPlayerConnected(playerid))
    {
        if(!IsACop(playerid))
{
    SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas un policier !");
    return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Uttilisation: /envoiture [playerid/PartOfName]");
return 1;
}
new newcar = GetPlayerVehicleID(playerid);
new playa;
playa = ReturnUser(tmp);
if(IsACopCar(newcar) || IsNgCar(newcar) || IsAnFbiCar(newcar))
{
    if(IsPlayerConnected(playa))
    {
        if(playa != INVALID_PLAYER_ID)
        {
            new Float:x, Float:y, Float:z;
            GetPlayerPos(playa,x,y,z);
            if(PlayerToPoint(5, playerid, x, y, z))
            {
            PutPlayerInVehicle(playa,newcar,1);
            GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s met en voiture %s dans son véhicule.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Ce joueur n'est pas près de vous.");
}
}
    }
}
else
{
    SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas près d'un véhicule de police !");
}
    }
    return 1;
}
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: Nico_Torres le 31 Août 2009, 14:22:55
Mais comment faire poru choisir la place ?
Si on veux le mettre devant, derriere a gauche ou derriere a droite ?   ;D
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: cristab le 31 Août 2009, 14:25:57
regarde le tableu ci dessous
Citer
0 1
3 4

mais attention avec 3 4 le serveur crash facilement
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: Nico_Torres le 31 Août 2009, 14:57:53
Oui mais is la on fait /envoiture ID 3
S afera rien, on doit le mettre ou ?
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: cristab le 31 Août 2009, 16:11:24
ici PutPlayerInVehicle(playa,newcar,1);   la le 1 veut dire place avant passager
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: Nico_Torres le 31 Août 2009, 19:20:27
Ok merci mais comment on fait pour qu'on puisse choisir ?
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: cristab le 31 Août 2009, 19:34:29
dans ce cas la tu rajoute dans ta commande qui devient  /envoiture [playerid/PartOfName] [place 1-2-3]
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: ghm94 le 31 Août 2009, 20:44:57
Mais attention a ne pas mettre une place déja prise sinon crash il me semble.

++
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: Lance le 31 Août 2009, 20:57:22
Et le test sur les voiture a 2 place, crash quand il sort, faut l'éjecter et tu crash.
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: Nico_Torres le 01 Septembre 2009, 10:37:11
if(strcmp(cmd, "/envoiture", true) == 0) // by Ellis
{
    if(IsPlayerConnected(playerid))
    {
        if(!IsACop(playerid))
{
    SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas un policier !");
    return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Uttilisation: /envoiture [playerid/PartOfName] [Place 1-2-3-4]");
return 1;
}
new newcar = GetPlayerVehicleID(playerid);
new playa;
playa = ReturnUser(tmp);
if(IsACopCar(newcar) || IsNgCar(newcar) || IsAnFbiCar(newcar))
{
    if(IsPlayerConnected(playa))
    {
        if(playa != INVALID_PLAYER_ID)
        {
            new Float:x, Float:y, Float:z;
            GetPlayerPos(playa,x,y,z);
            if(PlayerToPoint(5, playerid, x, y, z))
            {
            PutPlayerInVehicle(playa,newcar,1);
            GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s met en voiture %s dans son véhicule.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Ce joueur n'est pas près de vous.");
}
}
    }
}
else
{
    SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas près d'un véhicule de police !");
}
    }
    return 1;
}

Ce code est bon ?
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: The Bird le 02 Septembre 2009, 20:02:37
Si j'en crois ce que je vois, magrer que je ne peux pas plus t'aider, rajouter [placer 1 - 2 - 3] a SendClientMessage, c'est comme jeter un cailloux dans l'espace en esperant que le soleil te tombe dessus, sa ne peux pas marcher.

Je ne peux pas te donner d'indication de code, mais je peux juste te dire que sa ne marche pas.


Tu as beau rajouter [placer 1 - 2 - 3] , la seul chose que tu auras, c'est la phrase avec [placer 1 - 2 - 3], et rien d'autre.


Je ne peux pas t'aider, mais juste te prévenir que cela ne fonctionnera pas
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: abox le 03 Septembre 2009, 18:46:00
=O elle date c'est discuss', je l'avais completement oubliée!
Je vous donne ma commande =D :

if(strcmp(cmd, "/pullincar", true) ==0 || strcmp(cmd, "/mvg", true) == 0)
    {
    new suspect = GetClosestPlayer(playerid);
    if(PlayerInfo[playerid] [pMember] <= 1 || PlayerInfo[playerid] [pLeader] <= 1)
      {
    if(GetDistanceBetweenPlayers(playerid,suspect) < 15)
{
            tmp = strtok(cmdtext, idx);
            if (!strlen(tmp))
            return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /mvg [player id] [1/2/3]");
            new person = strval(tmp);
            tmp = strtok(cmdtext, idx);
            if (!strlen(tmp))
            return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /mvg [player id] [1/2/3]");
            new seat = strval(tmp);
            new Float:pos[6];
            GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
            GetPlayerPos(person, pos[3], pos[4], pos[5]);
            if (floatcmp(floatabs(floatsub(pos[0], pos[3])), 10.0) != -1 &&
            floatcmp(floatabs(floatsub(pos[1], pos[4])), 10.0) != -1 &&
            floatcmp(floatabs(floatsub(pos[2], pos[5])), 10.0) != -1) return false;
PutPlayerInVehicle(person, GetPlayerVehicleID(playerid), seat);
          }
          else
{
              SendClientMessage(playerid, COLOR_GREY, "Vous êtes trop loin du Joueur !");
            }
      }
      else
      {
           SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un Gang/Mafia !");
        }
  return 1;
}
if(strcmp(cmd, "/pullincar", true) ==0 || strcmp(cmd, "/mvp", true) == 0)
    {
    new suspect = GetClosestPlayer(playerid);
    if(PlayerInfo[playerid][pMember]== 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember]== 1 || PlayerInfo[playerid][pLeader] == 1)
      {
    if(GetDistanceBetweenPlayers(playerid,suspect) < 15)
{
            tmp = strtok(cmdtext, idx);
            if (!strlen(tmp))
            return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /mvp [player id] [1/2/3]");
            new person = strval(tmp);
            tmp = strtok(cmdtext, idx);
            if (!strlen(tmp))
            return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /mvp [player id] [1/2/3]");
            new seat = strval(tmp);
            new Float:pos[6];
            GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
            GetPlayerPos(person, pos[3], pos[4], pos[5]);
            if (floatcmp(floatabs(floatsub(pos[0], pos[3])), 10.0) != -1 &&
            floatcmp(floatabs(floatsub(pos[1], pos[4])), 10.0) != -1 &&
            floatcmp(floatabs(floatsub(pos[2], pos[5])), 10.0) != -1) return false;
PutPlayerInVehicle(person, GetPlayerVehicleID(playerid), seat);
          }
          else
{
              SendClientMessage(playerid, COLOR_GREY, "Vous êtes trop loin du Joueur !");
            }
      }
      else
      {
           SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un Policier !");
        }
  return 1;
}

(a placer dans OnCommandText après les news (si vous en avez mis dans le public).
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: The Bird le 03 Septembre 2009, 19:39:11
Que représente cette ligne ?

if(PlayerInfo[playerid] [pMember] <= 1 || PlayerInfo[playerid] [pLeader] <= 1)
Le 2 ème code a l'air de pouvoir fonctionner.


PS : 2 ( ou plus ) commande du même nom, font buger la commande. Donc quand tu la tapes, tu peux juste t'attendre à ne rien n'obtenir de celle-ci
Titre: Re : Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: ghm94 le 03 Septembre 2009, 19:44:42
PS : 2 ( ou plus ) commande du même nom, font buger la commande. Donc quand tu la tapes, tu peux juste t'attendre à ne rien n'obtenir de celle-ci

Oui j'avais même pas remarquer et indente ton code aussi ;)
Titre: Re : Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: abox le 03 Septembre 2009, 23:52:50
Que représente cette ligne ?

if(PlayerInfo[playerid] [pMember] <= 1 || PlayerInfo[playerid] [pLeader] <= 1)
Le 2 ème code a l'air de pouvoir fonctionner.


PS : 2 ( ou plus ) commande du même nom, font buger la commande. Donc quand tu la tapes, tu peux juste t'attendre à ne rien n'obtenir de celle-ci

Cela représente si le joueur est membre d'une faction N°1 ou + OU Leader de la faction N°1 ou+, il peut utiliser la commande, sinon il peut pas.

Et je sais pas pourquoi chez vous ca fonctionne pas mais chez moi ca fonctionne parfaitement.
Titre: Re : Une commande pour faire rentrer quelqu'un de force dans un véhicule?
Posté par: The Bird le 05 Septembre 2009, 11:36:30
La première commande ne sert a rien ( vu que de ton point de vue ), les 2 représentes la même...

De plus, le symbole < correspond a plus petit ( maintenant, si ce n'est pas la même chose que <=, j'en sais rien ), donc sa foudra dire

"si le joueur est membre de faction plus petit que 1 | si le joueur est chef de faction plus petit que 1"

Ce qui voudra dire dans cette fonction, qu'un civil aura aussi accès à cette commande.
Je te suggère de retirer la première commande.

( sa m'étonne que sa marche avec les nom de cmd )