GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: vardanega le 12 Février 2011, 08:37:31

Titre: Mettre tout mes joueurs dans des véhicules.
Posté par: vardanega le 12 Février 2011, 08:37:31
Bonjour, je souhaiterais que tout mes joueurs a un moment donnez dans le script ce retrouve dans des vehicules, sur mon serveur il y aura 15 joueurs maximum, il y aura aussi 15 véhicules donc je voudrais que chaque joueur soit mis dans un véhicule j'avais fait ce code mais a  vrai dire je pense pas qui ne fonctionne pas.

stock MettreJoueurVoiture()
{
for(new i; i < MAX_PLAYERS; i++)
    {
        new vi = 0;
        if(vi != 15 && vi < 14)
        {
        PutPlayerInVehicle(i, vi, 0);
                TogglePlayerControllable(i, 0);
        vi ++;
        return 1;
        }
        else
        {
            DestroyVehicle(vi);
        }
    }
}


Merci pour votre éventuelle aide.

Vince
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: Gilux le 12 Février 2011, 08:52:03
Salut, essaye d'incrémenter le compteur (vi ++;) même si le véhicule n'existe pas :


else
{
     DestroyVehicle(vi);
      vi++;
}


++
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: cristab le 12 Février 2011, 08:58:11
tente comme sa

stock MettreJoueurVoiture()
{
for(new i; i < 15; i++)//comme il y auras que 15 joueur max
    {
        new vi = 1;//les carid commence a 1
        if(vi != 15)
        {
        PutPlayerInVehicle(i, vi, 0);
                TogglePlayerControllable(i, 0);
        vi ++;
        }
        else
        {
            DestroyVehicle(vi);
        }
    }
}
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: babaorum59 le 12 Février 2011, 09:57:56
je vien de trouve une nouvelle commande pour mon serveur ^^
    new Float:X,Float:Y,Float:Z,Float:A;
    new Car = CreateVehicle(411, X, Y, Z, A, -1, -1, -1);
if(strcmp(cmdtext, "/allcar", true,4) == 0)
    {
    new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    Car = CreateVehicle(411,X,Y,Z,A,1,1);
    PutPlayerInVehicle(playerid,Car,0);
    return 1;
    }
tester et sa marche nikel
tout les joueur connecter seront dans une voiture crée plus loin
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: vardanega le 12 Février 2011, 20:44:31
Merci !
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: babaorum59 le 13 Février 2011, 10:18:31
ma commande est morte , j'ai tester encire hier avec 3 joueur et y'a que moi qui en a une
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: babaorum59 le 13 Février 2011, 11:18:12
sinon je pense avoir reussi sur se coup la :
    new Car = CreateVehicle(411, X, Y, Z, A, -1, -1, -1);
if(strcmp(cmdtext, "/allcar", true,4) == 0)
        {
new tmpp[256];
tmpp = strtok(cmdtext, idx);
        format(tmpp, sizeof(tmpp), "Une voiture qui tombe du ciel");
SendClientMessage(playerid, 0xFFFF00FF, tmpp);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    Car = CreateVehicle(411,X,Y,Z,A,1,1);
    PutPlayerInVehicle(playerid,Car,0);
    }
    }
  return 1;
  }
Titre: Re : Mettre tout mes joueurs dans des véhicules.
Posté par: S!m le 13 Février 2011, 20:52:56
Salut,

ton code crée une voiture pour chaque joueur et tente d'y mettre le joueur qui a tapé la commande...

Si vous voulez, une petite fonction qui pourrait vous aider:

PutAllPlayersInVehicle(model, color1 = -1, color2 = -1)
{
//on déclare les variables de la fonction
new vehicleid = 0;
new Float:X, Float:Y, Float:Z, Float:A;

//une petite boucle pour tester tous les joueurs
for(new i=0; i<MAX_PLAYERS; i++)
{
vehicleid = GetPlayerVehicleID(i);
if(vehicleid)//si le joueur est dans un véhicule
{
SetVehicleToRespawn(vehicleid);//on respawn le véhicule
}
if(GetPlayerState(i) >= PLAYER_STATE_ONFOOT && GetPlayerState(i) <= PLAYER_STATE_SPAWNED)//si le joueur est spawné (à peu près)
{
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    vehicleid = CreateVehicle(model, X, Y, Z+1, A, color1, color2);//j'ajoute 1 à la hauteur pour éviter d'être pris dans le sol
    PutPlayerInVehicle(i, vehicleid, 0);
}
    }
return 1;//on retourne 1 (facultatif)
}

Maintenant, vous n'avez qu'à appeler cette fonction pour placer tous les joueurs dans une voiture.
Toutefois, attention de n'appeler la fonction qu'une fois, sinon les véhicules vont s'accumuler car il ne seront jamais détruits.

désolé pour les petits détails non rigoureux de la fonction (comme le if(vehicleid))

Bonne chance

++Sim++