• 04 Juin 2026, 16:03:15


Auteur Sujet: Fonction /demarrer, le fameux "Engine"  (Lu 2115 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Fonction /demarrer, le fameux "Engine"
« le: 02 Juillet 2011, 03:38:57 »
Bonjour (Bonsoir ? :))

J'avance peu à peu dans mon script grâce à tout les tutos présents sur gtao et vos conseils et je tiens d'abord à vous en remercier.
Si je post à nouveau c'est bien parceque je suis face à un problème que je ne surmonte pas malgré mes folles recherches.

Je suis en pleine création d'une fonction /demarrer qui fonctionne assez bien avec un Timer dont je suis assez fier (n'oublions pas que je débute :D).
Hélas je voudrais ajouter en condition le fait que le moteur soit allumé ou éteint via le engine.

J'ai eu beau trafiquer avec le GetVehicleParamsEx, et avoir rechercher durant de très longues heures, cela reste infructueux, j'en appel donc à vos connnaissances si vous le voulez bien.
Je vous remercie de votre lecture,
Remy.




post scriptum: J'ai pu voir par ci par là : engineOn[playerid], ou gEngine[GetPlayerVehicleID] mais ceci ne m'aide pas n'ayant aucune expliquation ou même le script en entier.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #1 le: 02 Juillet 2011, 11:14:26 »
bojour j'ai creer un systeme de voiture avec cette option va faire un tour dans le showroom :) si tu ne trouve pas ou n'arrive pas a l'implanter je t'aiderais
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #2 le: 02 Juillet 2011, 15:15:39 »
J'ai cherché dans le showroom et ait trouvé un sujet qui est de toi avec tout un système de véhicule (essence, vente, code pin,etc...)
J'ai trouvé d'autre sujet intéressant mais je ne fais pas de lien avec mon problème de engine. Je vais essayer d'être clair.

Ce que je souhaite c'est que pour que ma condition de "if" soit que le moteur du véhicule dans lequel se trouve le joueur soit éteint. Et vice versa.
Voici ce que j'ai pu faire jusqu'à présent:

Voici mon script:    if (strcmp("/demarrer", cmdtext, true, 10) == 0)
{
    new engine, lights, alarm, doors, bonnet, boot, objective;
if(IsPlayerInAnyVehicle(playerid))
  {
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
          GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
  if(engine == VEHICLE_PARAMS_OFF)
  {
new messagedemarrage[128], joueur[MAX_PLAYER_NAME];
GetPlayerName(playerid, joueur, sizeof(joueur));
format(messagedemarrage, sizeof(messagedemarrage), "Le véhicule de %s est entrain de démarrer...", joueur);
SendClientMessage(playerid, GRIS, messagedemarrage);
    SetTimerEx("DemarrerVehicule", 5000, false, "i", playerid);
}
                     else
{
SendClientMessage(playerid, GRIS, "Le moteur est déjà allumé");
}
}
  }
return 1;
}



Voici ton script:if(strcmp(cmdtext, "/moteur", true) == 0)
           {
             new veh = GetPlayerVehicleID(playerid);
             new engine, lights, alarm, doors, bonnet, boot, objective;
             if(IsPlayerInAnyVehicle(playerid))
                {
                     if(veh != INVALID_VEHICLE_ID)
                    {
                        GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
                        if(engine == VEHICLE_PARAMS_OFF)
                        {
                            SetVehicleParamsEx(veh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
                            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous venez d'allumer le moteur de la voiture.");
                        }
                        else
                        {
                            SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
                            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous venez d'eteindre le moteur de la voiture.");
                        }
                    }
                }
             return 1;
    }

Dans mon script, le /demarrer me m"écrit à l'écran "Le moteur est allumé" car il rentre le "else".
Ce qui signifie que le "engine == VEHICLE_PARAMS_OFF" n'est pas validé, j'en déduis que mon engine ne doit pas correspondre au "engine" du véhicule en question.
Je pense que c'est là que se trouve mon erreur.

Hors ligne Karting06

  • *
  • Grand Banditisme
  • Messages: 650
    • Voir le profil
Re : Re : Fonction /demarrer, le fameux "Engine"
« Réponse #3 le: 02 Juillet 2011, 15:18:54 »
Dans mon script, le /demarrer me m"écrit à l'écran "Le moteur est allumé" car il rentre le "else".
Ce qui signifie que le "engine == VEHICLE_PARAMS_OFF" n'est pas validé, j'en déduis que mon engine ne doit pas correspondre au "engine" du véhicule en question.
Je pense que c'est là que se trouve mon erreur.
Je comprends pas ton problème...

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #4 le: 02 Juillet 2011, 15:23:14 »
ajoute ceci dans le OnGameModeInit ManualVehicleEngineAndLights(); je pense que sa doit corriger le GetVehicleParamsEx qui a tendance a ne pas retourner les bonne valeurs en temps normale
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #5 le: 02 Juillet 2011, 15:25:40 »
Je l'ai déjà le "ManualVehicleEngineAndLights();"


Dans mon script, le /demarrer me m"écrit à l'écran "Le moteur est allumé" car il rentre le "else".
Ce qui signifie que le "engine == VEHICLE_PARAMS_OFF" n'est pas validé, j'en déduis que mon engine ne doit pas correspondre au "engine" du véhicule en question.
Je pense que c'est là que se trouve mon erreur.
Je comprends pas ton problème...

Pour simplifier:
Quand je fais /demarrer cela m'écrit uniquement "Le moteur est déjà allumé", alors qu'il est éteint, et mon moteur ne s'allume jamais. (Mon SetTimerEx fonctionne très bien)
« Modifié: 02 Juillet 2011, 15:29:26 par remy69400 »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #6 le: 02 Juillet 2011, 15:28:20 »
bizard sa
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Fonction /demarrer, le fameux "Engine"
« Réponse #7 le: 02 Juillet 2011, 20:30:27 »
Ce genre de condition n'a jamais fonctionné avec moi non plus, il vaut mieux utiliser une variable Moteur qui prend la valeur 1 chaque fois qu'il est allumé et 0 lorsqu'il est éteint.

Hors ligne remy69400

  • *
  • Nouveau
  • Messages: 17
    • Voir le profil
Re : Re : Fonction /demarrer, le fameux "Engine"
« Réponse #8 le: 03 Juillet 2011, 02:38:19 »
Ce genre de condition n'a jamais fonctionné avec moi non plus, il vaut mieux utiliser une variable Moteur qui prend la valeur 1 chaque fois qu'il est allumé et 0 lorsqu'il est éteint.

Après un très long travail de rechercher, de bricolage et d'expérience en tout genre je suis arrivé à ma fonction grâce à cette variable Moteur, merci  à vous tous.

La réponse pour ceux qui sont dans le même cas que moi passe par la mise en place d'une variable du type:

new engineOn[MAX_VEHICLES];engineOn[GetPlayerVehicleID(playerid)] = false;engineOn[GetPlayerVehicleID(playerid)] = true;if (engineOn[GetPlayerVehicleID(playerid)])if (!engineOn[GetPlayerVehicleID(playerid)])
Merci à Foo pour son GM qui montre après beaucoup de réflexion l'utilisation de cette variable.