GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 21 Octobre 2009, 15:43:49

Titre: Teleporter un joueur dans un voiture
Posté par: scott1 le 21 Octobre 2009, 15:43:49
Bonjour a tous,

'aimerai savoir comment faire pour qu'n joueur qui fait une commande soit tp dans le véhicule 175, mais que si il y a deja quelqu'un au volant, qu'il soit tp dans le 176, mais que si il y a deja quelqu'un au volant, qu'il soit tp dans le 177 , mais que si il y a deja quelqu'un au volant, qu'ion li dise que tout les véhicule sont utiliser, qu'il doit attendre un peux. Merci



Merci
Titre: Re : Teleporter un joueur dans un voiture
Posté par: S!m le 23 Octobre 2009, 03:35:09
Salut,

faudrait davantage t'expliquer, tu ne veut que ça le fasse qu'avec ces trois véhicules ou il s'agit d'un exemple?

tu peut toujours faire le test IsPlayerInVehicle dans une loop qui test tous les joueurs (ce qui revient à un IsAnyPlayerInVehicle)

voilà si tu pouvais élaborer et arriver avec un début de code à améliorer, ça aiderait ton cas...

++Sim++
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 23 Octobre 2009, 07:54:21
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle

genre

for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}

Et la tu va mieu comprendre
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 23 Octobre 2009, 16:35:04
Voila ma cmd.

if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
        {
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
          {
              if(PlayerInfo[playerid][pCarLic] != 0)
{
            if(PlayerInfo[playerid][pPrat] == 0)
{
    if(GetPlayerMoney(playerid) < 1500)
    {
              SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
              return 1;
}
else
{
              SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
              SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
              SafeGivePlayerMoney(playerid, - 1500);
                        PutPlayerInVehicle(playerid, 175, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
              OnPlayerUpdate(playerid);
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
  return 1;
}

J'ai mis  PutPlayerInVehicle(playerid, 175, 0);    Le probleme s'est que si un joueur est déjà dans le véhicule, il sera éjecté. J'aimerai simplement qui si il y a déjà quelqu'un dedans ce soit PutPlayerInVehicle(playerid, 176, 0);
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 24 Octobre 2009, 11:13:03
Il faut que tu mettes des conditions  "si 1 joueur est dans le véhicule 175 alors 176 sinon 175" et pour cela il faut que tu utilises des if, else et des else if

Là dans ta commande, tu dis au script "si la personne n'a pas 1500 alors il ne peux pas le passer sinon il va directement dans le véhicule 175" et donc le script c'est se qu'il fait. Pour lui, si une personne est déjà dans le véhicule, ça ne lui fait ni chaud ni froid vu qu'il n'est pas pris en compte dans la commande et donc il l'éjecte.

Avec tout ça et se qu'il est écrit au dessus, normalement tu devrais pouvoir continuer ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 12:13:00
Mais je ne sais pas comment verifier si un joueur est dans le véhicule. :s
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 24 Octobre 2009, 12:27:49
http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle (http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle)

et

http://wiki.sa-mp.com/wiki/GetPlayerVehicleID (http://wiki.sa-mp.com/wiki/GetPlayerVehicleID)

avec sa tu peu je pense faire ce que tu souhaite
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 12:47:45
Non, car ça ça vérifie si le joueur est dans un véhicule, moi je cherche si un joueur et dans le véhicule, subtil ^^
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 24 Octobre 2009, 13:08:58
Justement, avec la fonction GetPlayerVehiculeID tu récupère l'id du Véhicule. Il te suffit donc de bien regarder les liens donné par cristab et de définir les conditions et le tour est joué ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 14:49:03
Parameters:
(playerid)
playerid   The player in the vehicle that you want to get the ID of
Returns   ID of the vehicle or 0 if not in a vehicle


//add 10x Nitro if the player is in a car. Might be called on a command.
new vehicle;
vehicle = GetPlayerVehicleID(playerid);
if (vehicle > 0)
{
    AddVehicleComponent(vehicle, 1010);
}

Quand je lis ça, voila ce que je comprend.

playerid   L'id du joueur qui est dans le véhicule

donc
si le joueur est dans un véhicule dont l'id est > 0 on ajoute de la nitro.

Donc je ne vois pas en quoi ça m'aide puisqu'on cherche si le joueur est dans un véhicule.

Ou  je comprend mal?
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 24 Octobre 2009, 14:56:07
Tu comprends bien mais tu ne réfléchis pas.

Dans une commande, tu n'est pas obligé d'utiliser que > mais tu peux utiliser < ou = et donc tu peux dire si une personne est dans le véhicule 175 au lieu de dire si une personne est dans un véhicule au dessus de 0 ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 24 Octobre 2009, 14:57:50
tu comprend mal

playerid 5 a taper la commande est teleporter dans le vehicul 175 tu fait une variable qui va dire que ce vehicule est occuper
playerid 6 a taper la commande est teleporter dans le vehicul 175 mais vus que la variable de ce vehicule est a 1 on le met dans le vehicule 176 et la on met la varible du vehicule a 1 qui va dire que ce vehicule est occuper

si tu regarde plusieur script la variable que tout le monde emploie s'apelle "used[vehicleid]"

diablo plus rapide que moi  :happy
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 15:08:42
Bon voila j'ai essayer ça, il n'y a plus qu'a la tester

if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
        {
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
          {
              if(PlayerInfo[playerid][pCarLic] != 0)
{
            if(PlayerInfo[playerid][pPrat] == 0)
{
    if(GetPlayerMoney(playerid) < 1500)
    {
              SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
              return 1;
}
else
{
              for(new i; i<MAX_PLAYERS; i++)
{
    if(IsPlayerInVehicle(i,175) == 0)
{
   
    PutPlayerInVehicle(playerid, 175, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
              SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
              SafeGivePlayerMoney(playerid, - 1500);
              OnPlayerUpdate(playerid);
              return 1;
}
              if(IsPlayerInVehicle(i,175) == 1)
{
    if(IsPlayerInVehicle(i,176) == 0)
{
    PutPlayerInVehicle(playerid, 176, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
              SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
              SafeGivePlayerMoney(playerid, - 1500);
              OnPlayerUpdate(playerid);
}
return 1;
}
if(IsPlayerInVehicle(i,175) == 1)
{
    if(IsPlayerInVehicle(i,176) == 1)
{
    if(IsPlayerInVehicle(i,177) == 0)
{
    PutPlayerInVehicle(playerid, 177, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
              SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
              SafeGivePlayerMoney(playerid, - 1500);
              OnPlayerUpdate(playerid);
}
}
return 1;
}
    if(IsPlayerInVehicle(i,175) == 1)
{
    if(IsPlayerInVehicle(i,176) == 1)
{
    if(IsPlayerInVehicle(i,177) == 1)
{
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Toutes les voitures sont occupée, revenez plus tard.");

              }
}
}
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
  return 1;
}

Double post
ça ne va pas.Je desespere.
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 24 Octobre 2009, 22:11:24
Je me doutais bien que ça n'aurait pas fonctionner étant donner que tu as plusieurs fois la condition if(IsPlayerInVehicle(i,175) == 1).

Donc 2 choses pour t'aider, soit devant tu ajoutes des else pour faire que tes conditions se transforme en else if(IsPlayerInVehicle(i,175) == 1) (mais je ne crois pas que ça va fonctionner), soit tu réduit en employant qu'une seule fois if(IsPlayerInVehicle(i,175) == 1) (chose qui est plus probable à mon avis).

Ta condition se présentera comme ça (je schématise et donc il ne te reste plus qu'à remplacer avec les bons termes):

Si (pas de joueur dans vehicule 175)
Alors il monte
sinon si (pas de joueur dans vehicule 176)
alors il monte
sinon si (pas de joueur dans vehicule 177)
alors il monte
sinon tous les véhicules sont pris.


Maintenant que tu as tous les éléments avec le schéma pour réussir, tu devrais pouvoir la faire sans problème ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 23:00:46
Ceci ça va?

if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
       {
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
           {
              if(PlayerInfo[playerid][pCarLic] != 0)
{
            if(PlayerInfo[playerid][pPrat] == 0)
{
   if(GetPlayerMoney(playerid) < 1500)
   {
            SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
            return 1;
}
else
{
            for(new i; i<MAX_PLAYERS; i++)
{
   if(IsPlayerInVehicle(i,175) == 0)
{
   
  PutPlayerInVehicle(playerid, 175, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
            return 1;
}
else if(IsPlayerInVehicle(i,176) == 0)
{
  PutPlayerInVehicle(playerid, 176, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
}
else if(IsPlayerInVehicle(i,177) == 0)
{
  PutPlayerInVehicle(playerid, 177, 0);
                        SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
}
    else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Toutes les voitures sont occupée, revenez plus tard.");
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
   return 1;
}
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 24 Octobre 2009, 23:11:13
Essayes de mettre des else devant if(IsPlayerInVehicle(i,176) == 0) et devant if(IsPlayerInVehicle(i,177) == 0) car se sont eux tes conditions "sinon si" (else if) de mon schéma.

La ligne else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1) tu peux la supprimer et ne mettre que else car c'est lui le dernier sinon (la phrase "tous les véhicules sont pris" dans mon schéma, j'aurais du le mettre sur la ligne en dessous).

Maintenant, en théorie ça doit fonctionner, (bien que je ne saches pas se que veux dire PutPlayerInVehicle(playerid, 175, 0) ni SetPlayerVirtualWorld(playerid, 0) et donc à quoi elle corresponde ;) )
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 23:26:11
ça ne fonctionne pas :s.


PutPlayerInVehicle(playerid, 175, 0) =  met le joueur a la place du conducteur dans le vehicule 175

SetPlayerVirtualWorld(playerid, 0)  = met le monde virtuel du jouer a 0
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 24 Octobre 2009, 23:36:57
si tu met le joueur mais pas le vehicule dans le virtual world sa ne fonctionneras pas
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 24 Octobre 2009, 23:56:51
Le virtual world ne change rien, s'est pour le tp ^^
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 25 Octobre 2009, 00:01:44
pourtant je trouve ce genre de chose simple j'ai meme donné comment faire peu pas plus t'aider dsl
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 25 Octobre 2009, 00:03:36
Merci.

Je ne connaissais pas l'existence du monde virtuel mais ce qu'à ajouter cristab est logique.

Maintenant, je vois que tu as éditer le code donné en ajoutant les else if que je t'ai dis devant if(IsPlayerInVehicle(i,176) == 0) et devant if(IsPlayerInVehicle(i,177) == 0), mais tu n'as pas retirer if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1) de la dernière ligne (ils sont en trop et ne servent à rien).

De plus, tu as oublié les return ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 25 Octobre 2009, 00:13:57
Je l'ai enlever dans mon GM :s Tu ne veux pas modif ma cmd ? ^^ Car la je sèche
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 25 Octobre 2009, 00:39:21
Désolé, actuellement je suis malade (grippe depuis 2/3 jours) et je ne devrais même pas aller sur mon Pc. J'ai demandé conseil à cristab pour mon système d'argent (sujet textdraw argent), mais j'ai tellement l'impression que ma tête va exploser que j'ai pas encore eu le courage de réfléchir au sujet ni même de reprendre mon script afin de le continuer.

Si j'ai répondu, c'est parce que j'étais devant mon Pc et que ça ne demandait pas trop de réflexions sur la façon de faire la commande, mais je suis pour l'instant incapable de réfléchir plus afin de faire la commande ni même de choisir les bons termes (c'est pour cela que j'ai schématisé).

Maintenant si je devrais faire la commande, je ferais la même chose (mais bon, là je n'ai pas la tête à réfléchir à d'autres méthodes) en enlevant la ligne qui correspond au monde virtuel  (vu que je ne sais pas à quoi correspond le monde virtuel ), j'enlèverais le return qui est dans la condition if(IsPlayerInVehicle(i,175) == 0) (ou j'en mettrais aux autres conditions) et je supprimerais la ligne "else if(IsPlayerInVehicle(i,175) == 1 && IsPlayerInVehicle(i,176) == 1 && IsPlayerInVehicle(i,177) == 1)" pour mettre à la place else

Enfin, un petit conseil: quand tu n'arrives pas quelque chose il ne sert à rien de s'obstiner car tu n'arriveras pas à réfléchir à toutes les possibilités. Si ça ne fonctionne pas, laisse ça de coté et fait autre chose. Quand tu reviendras dessus après plusieurs jours ou mois et vu que tu auras acquis un peu plus d'expérience, ce sera plus simple, tu verras tes erreurs et tu trouveras peux être d'autres façons d'y arriver ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 25 Octobre 2009, 01:09:47
Va te reposer alors ! :D

Ben attendre quelque mois/année, je ne peux pas, ce beug est fort ennuiant et je dois le regler au plus vitte^^.

Merci de ton aide, j'essayerai de me débrouiller seul.
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 25 Octobre 2009, 09:10:52
Cette nuit j'ai un peu réfléchi à ta commande et j'ai pensé à ça (toujours façon schéma):

si (une personne dans 175)
{
    si (une personne dans 176)
    {
        si (une personne dans 177)
        {
        envoie du message : tous les véhicules sont pris
        }
        sinon
        {
        il monte dans 177
        }
    }
    sinon
    {
    il monte dans 176
    }
}
sinon
{
il monte dans 175
}

Je te laisse mettre les vrais termes et les return.

Maintenant si ça ne fonctionne pas de cette façon c'est qu'il y a peux être une autre méthode (mais pas la tête de réfléchir pour la faire)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 25 Octobre 2009, 09:46:07
Ok, merci c'est bien gentil. Je peux encore abuser? Je ne m'en sort pas avec les return, ou dois je le s mettre?
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 25 Octobre 2009, 10:48:39
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle

genre

for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}
normalement avec ca tu doit bien t en sortir mais je voit que tu veut pas  reflechir

Et la tu va mieu comprendre
Titre: Re : Re : Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 25 Octobre 2009, 11:14:40
béh c' est assez simple
tu creer une variable tableau avec MAX_VEHICLES comme grandeur puis tu fait une boucle

genre

for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i)
{
tavar[GetPlayerVehicleID(i)] = 1;
}
}
normalement avec ca tu doit bien t en sortir mais je voit que tu veut pas  reflechir

Et la tu va mieu comprendre

Je ne comprend pas ce code :s
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 26 Octobre 2009, 16:49:24
Up ^^
Titre: Re : Teleporter un joueur dans un voiture
Posté par: S!m le 27 Octobre 2009, 00:10:21
Salut,

ce que je considère comme une fonction IsAnyPlayerInVehicle:

IsAnyPlayerInVehicle(vehicleid)
{
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(vehicleid == GetPlayerVehicleID(i))
        {
            return true;
        }
    }
    return false;
}

Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel

++Sim++
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: Stylis le 27 Octobre 2009, 00:57:29
si (une personne dans 175)
{
    si (une personne dans 176)
    {
        si (une personne dans 177)
        {
        envoie du message : tous les véhicules sont pris
        }
        sinon
        {
        il monte dans 177
        }
    }
    sinon
    {
    il monte dans 176
    }
}
sinon
{
il monte dans 175
}

D'apres le shéma de Diablo62 ( Qui est très bien expliquer :-*), voila ce que j'ai pu faire ( Je ne suis pas sur que ce soit juste mais théoriquement cela est juste ;)

if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 1)
{
SendClientMessageToPlayer(0xAA3333AA, "Aucun véhicule n'es disponible pour le moment.");
}
else
{
PutPlayerInVehicle(playerid, 177, 0)
}
}
else if
{
PutPlayerInVehicle(playerid, 176, 0)
}
else if
{
PutPlayerInVehicle(playerid, 175, 0)
}
}

++ Callo
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 27 Octobre 2009, 12:08:53
Je suis désolé de dire ca mais ce code

if(IsPlayerInVehicle(i,175) == 1)
{
if(IsPlayerInVehicle(i,176) == 1)
{
if(IsPlayerInVehicle(i,177) == 1)
{
SendClientMessageToPlayer(0xAA3333AA, "Aucun véhicule n'es disponible pour le moment.");
}
else
{
PutPlayerInVehicle(playerid, 177, 0)
}
}
else if
{
PutPlayerInVehicle(playerid, 176, 0)
}
else if
{
PutPlayerInVehicle(playerid, 175, 0)
}
}
Est completement faux !


depuis quand on fait des else if sans determiner la condition et y a aussi d' autre incoherence donc faut revoir ce code lol
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 27 Octobre 2009, 12:24:45
if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
}
else//sinon
{
//on lui indique qu'il n'y a plus de vehicule
}
}
else //si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid, 175, 0); //on le met dedans
}

Voila a peu pret l'histoire
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 27 Octobre 2009, 13:13:05
if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
}
else//sinon
{
//on lui indique qu'il n'y a plus de vehicule
}
}
else //si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid, 175, 0); //on le met dedans
}

Voila a peu pret l'histoire

C'est mon schéma avec les termes en faites :p
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 27 Octobre 2009, 13:41:01
tout a fait j'ai juste corriger Stylis pour qu'il se rende compte de la remarque se Sasuke
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 27 Octobre 2009, 14:04:05
tout a fait j'ai juste corriger Stylis pour qu'il se rende compte de la remarque se Sasuke

Oops j' ai oublier de faire la correction !

Merci Cristab
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Stylis le 27 Octobre 2009, 14:56:01
Oops ... Excuser moi pour l'erreur :-\
J'ai aussi compris mon erreur ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 27 Octobre 2009, 20:25:47
J'espere que ceci cera ok

if(strcmp(cmd, "/pratique", true) == 0)
{
if(IsPlayerConnected(playerid))
       {
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
           {
              if(PlayerInfo[playerid][pCarLic] != 0)
{
            if(PlayerInfo[playerid][pPrat] == 0)
{
   if(GetPlayerMoney(playerid) < 1500)
   {
            SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent pour acheter le permis pratique.");
            return 1;
}
else
{
            for(new i; i<MAX_PLAYERS; i++)
{
   if(IsPlayerInVehicle(i,175) == 1)//si le vehicule 175 est occuper
{
if(IsPlayerInVehicle(i,176) == 1)//si le vehicule 176 est disponible
{
   if(IsPlayerInVehicle(i,177) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid, 177, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
            return 1;
}
else//sinon
{
SendClientMessage(playerid, COLOR_WHITE, "Aucun véhicule n'est disponible pour le moment.");//on lui indique qu'il n'y a plus de vehicule
}
}
else//sinon
{
PutPlayerInVehicle(playerid, 176, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
            return 1;
}
}
else//sinon
{
PutPlayerInVehicle(playerid, 177, 0); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
TogglePlayerControllable(playerid, 0);
  SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez commencer le test pour le permis pratique pour $1, 500");
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer utiliser /commencerpratique");
            SafeGivePlayerMoney(playerid, - 1500);
            OnPlayerUpdate(playerid);
            return 1;
}
}
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous avez déjà le permis pratique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous devez d'abord avoir le permis théorique.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'êtes pas à l'auto école.");
return 1;
}
}
   return 1;
}

Toujours pas :/
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 27 Octobre 2009, 21:12:30
tente comme ceci

<?php
if(strcmp(cmd"/pratique"true) == 0)
{
if(GetPlayerMoney(playerid) < 1500)
{
SendClientMessage(playeridCOLOR_GREY"Vous n'avez pas assez d'argent pour acheter le permis pratique.");
    return 1;
}
if(PlayerInfo[playerid][pCarLic] != 0)
{
SendClientMessage(playeridCOLOR_LIGHTBLUE"Vous n'êtes pas à l'auto école.");
return 1;
}
if(PlayerInfo[playerid][pPrat] != 0)
{
SendClientMessage(playeridCOLOR_LIGHTBLUE"Vous avez déjà le permis pratique.");
return 1;
}
if(PlayerToPoint(3.0,playerid,1490.3195,1305.6976,1093.2964))
    {

for(new ii<MAX_PLAYERSi++)
{
if(IsPlayerInVehicle(i,175) == 0)//si le vehicule 175 est libre
{
PutPlayerInVehicle(playerid1750); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid0);
TogglePlayerControllable(playerid0);
SendClientMessage(playeridCOLOR_LIGHTBLUE"Vous avez commencer le test pour le permis pratique pour $1, 500");
             
SendClientMessage(playeridCOLOR_LIGHTBLUE"Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
        OnPlayerUpdate(playerid);
}
else
{
if(IsPlayerInVehicle(i,176) == 0)//si le vehicule 176 est libre
{
PutPlayerInVehicle(playerid1760); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid0);
TogglePlayerControllable(playerid0);
SendClientMessage(playeridCOLOR_LIGHTBLUE"Vous avez commencer le test pour le permis pratique pour $1, 500");
SendClientMessage(playeridCOLOR_LIGHTBLUE"Pour commencer utiliser /commencerpratique");
SafeGivePlayerMoney(playerid, - 1500);
OnPlayerUpdate(playerid);
}
else
{
if(IsPlayerInVehicle(i,177) == 0)//si le vehicule 176 est disponible
{
PutPlayerInVehicle(playerid1770); //on le met dedans
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid0);
TogglePlayerControllable(playerid0);
SendClientMessage(playeridCOLOR_LIGHTBLUE"Vous avez commencer le test pour le permis pratique pour $1, 500");
              SendClientMessage(playeridCOLOR_LIGHTBLUE"Pour commencer utiliser /commencerpratique");
              SafeGivePlayerMoney(playerid, - 1500);
              OnPlayerUpdate(playerid);
             }
}
}
else
{
SendClientMessage(playeridCOLOR_WHITE"Aucun véhicule n'est disponible pour le moment.");//on lui indique qu'il n'y a plus de vehicule
}
}
}
  
return 1;
}

Desoler si je ne l'ast pas bien compris mais sur le forum dur dur
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 27 Octobre 2009, 22:05:50
tente comme ceci

<?php


= ?


C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21716) : error 029: invalid expression, assumed zero
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Stylis le 27 Octobre 2009, 22:14:02
Il faut le supprimer le:

<?php
C'est un bug ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 27 Octobre 2009, 22:14:28
c'est pour la couleur j'aime la couleur la vie est en couleur mon code aussi

PS ce n'est pas un bug ;)
Titre: Re : Re : Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 27 Octobre 2009, 22:27:54
Citer

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21716) : error 029: invalid expression, assumed zero
Titre: Re : Teleporter un joueur dans un voiture
Posté par: S!m le 27 Octobre 2009, 22:39:01
Salut,

je croyais avoir conseillé d'utiliser ma fonction?

comme le dit sasuke, ce code est complètement faux, dès qu'un joueur ne sera pas dans un des véhicules testés, le joueur qui tape la commande y sera placé, et ce un grand nombre de fois (vivement la loop)


le bout de code, correspondrait plutôt à:

if(IsAnyPlayerInVehicle(175))
{
if(IsAnyPlayerInVehicle(176))
{
If(IsAnyPlayerInVehicle(177))
{
//message erreur
}
else
{
PutPlayerInVehicle(playerid, 177, 0);
}
}
else
{
....
}
}
else
{
...
}

voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)

++Sim++
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 12:38:19


voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)

++Sim++

Loop?

Merci de maider.

J'ai

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21675) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21677) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21679) : error 017: undefined symbol "IsAnyPlayerInVehicle"

J'ai chercher, mais je ne sais pas comment la definir
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 28 Octobre 2009, 14:02:24
tu as du chercher longtemps  :ninja http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle (http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 14:54:39
Oui et on ne definis pas la fonction la desus
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Diablo62 le 28 Octobre 2009, 15:13:09
C'est parce que c'est IsPlayerInAnyVehicle au lieu de IsAnyPlayerInVehicle ;)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 15:59:38
J'ai changer, mais sa me téléporte toujours dans la voiture même si qqn est déjà dedans :/
Titre: Re : Teleporter un joueur dans un voiture
Posté par: S!m le 28 Octobre 2009, 16:44:05
Salut,

suffisait de lire mes postes précédants, j'ai créer cette fonction pour te simplifier le problème..... :closedeyes

++Sim++
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 28 Octobre 2009, 16:51:44
J' ai fait un equivalent mais pour tout les vehicules ....

regarde mon Loop
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 16:53:24
Loop ?

J'ai pris ton exemple Sim
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: cristab le 28 Octobre 2009, 17:16:20
Salut,

ce que je considère comme une fonction IsAnyPlayerInVehicle:

IsAnyPlayerInVehicle(vehicleid)
{
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(vehicleid == GetPlayerVehicleID(i))
        {
            return true;
        }
    }
    return false;
}

Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel

++Sim++

Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement
Titre: Re : Re : Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 19:00:51
Salut,

ce que je considère comme une fonction IsAnyPlayerInVehicle:

IsAnyPlayerInVehicle(vehicleid)
{
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(vehicleid == GetPlayerVehicleID(i))
        {
            return true;
        }
    }
    return false;
}

Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel

++Sim++

Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement

Ouai, mas je n'y comprend rien de rien. Suis je idiot? xD
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 28 Octobre 2009, 19:26:04
Loop ?

J'ai pris ton exemple Sim

http://en.wikipedia.org/wiki/For_loop (http://en.wikipedia.org/wiki/For_loop)


voila =)
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 28 Octobre 2009, 19:30:04
bon reprenons depuit le bidule du shmilblic



voilà complète et intègre correctement dans ta commande maintenant (n'oublie pas d'enlever ta loop!!!!)

++Sim++

Loop?

Merci de maider.

J'ai

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21675) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21677) : error 017: undefined symbol "IsAnyPlayerInVehicle"
C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(21679) : error 017: undefined symbol "IsAnyPlayerInVehicle"

J'ai chercher, mais je ne sais pas comment la definir

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Salut,

suffisait de lire mes postes précédants, j'ai créer cette fonction pour te simplifier le problème..... :closedeyes

++Sim++
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Salut,

ce que je considère comme une fonction IsAnyPlayerInVehicle:

IsAnyPlayerInVehicle(vehicleid)
{
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(vehicleid == GetPlayerVehicleID(i))
        {
            return true;
        }
    }
    return false;
}

Utilise judicieusement avec le "schéma" (presque un code en fait) de diablo62 et tu devrais arriver à un code fonctionnel

++Sim++

Voila la fonction que Sim parle desoler mais je ne lit pas tout le post c'est a toi de lire tout le post scott la tu me donne l'impression du faite le moi et je copie colle betement

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

est ce que j'ai zapper un truc ou tu ne te souvient plus des questions que tu te pose ??
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 19:51:28
Merci, je vois, masi je ne vois pas comment l'intergrer

IsAnyPlayerInVehicle(vehicleid)
{
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
        if(vehicleid == GetPlayerVehicleID(i))
        {
            return true;
        }
    }
    return false;
}

Double post
Loop ?

J'ai pris ton exemple Sim

http://en.wikipedia.org/wiki/For_loop (http://en.wikipedia.org/wiki/For_loop)


voila =)

Au fait merci
Titre: Re : Teleporter un joueur dans un voiture
Posté par: cristab le 28 Octobre 2009, 20:23:45
copie colle en bas de ton GM ...
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 20:30:12
Encore merci pour l'aide que tu m'apporte.

Mais...J'ai encore besoind e toi ^^

C:\Documents and Settings\Propriétaire\Bureau\serveur samp\LARP\bon 03a\gamemodes\amende4.pwn(52366) : warning 235: public function lacks forward declaration (symbol "IsAnyPlayerInVehicle")
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 28 Octobre 2009, 21:08:25
place ca dans le code enfin tout en haut


forward IsAnyPlayerInVehicle(playerid);
Titre: Re : Teleporter un joueur dans un voiture
Posté par: scott1 le 28 Octobre 2009, 21:46:37
Merci

Double post
Grand merci pour votre aide !!!
Titre: Re : Teleporter un joueur dans un voiture
Posté par: S!m le 29 Octobre 2009, 22:23:32
Salut,

tu n'était pas obliger de mettre la fonction public

le préfixe public n'est nécessaire que pour les fonctions que tu désire accessible par CallRemoteFunction (par un autre script quoi), CallLocalFunction et les timer

++Sim++
Titre: Re : Teleporter un joueur dans un voiture
Posté par: Ssk le 29 Octobre 2009, 23:52:03
on peu mettre private aussi =)
mais c 'est le contraire de public
Titre: Re : Re : Teleporter un joueur dans un voiture
Posté par: S!m le 29 Octobre 2009, 23:53:50
Salut,

on peu mettre private aussi =)
mais c 'est le contraire de public

mais les gens n'ont pas la mauvaise habitude de l'utiliser sans raison :P

++Sim++