• 06 Juin 2026, 05:55:23


Auteur Sujet: Problème avec le => SetVehicleParamsForPlayer  (Lu 1795 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Problème avec le => SetVehicleParamsForPlayer
« le: 15 Mai 2008, 16:23:01 »
Bonsoir,

J'ai lu le Wiki de Samp mais j'ai toujours un problème avec le
SetVehicleParamsForPlayer il ferme pas la voiture quand je tape /ferme il me dit le message mais rien de plus

Je tien a dire que je tape la commande en dehors de la voiture et non dedans
c'est pour faire un race

Moi je voudrais fermer la voiture meme si je suis pas dedans

if(strcmp(cmd, "/ferme", true) == 0) {
  SendClientMessage(playerid, COLOR_RED,"Fermer");
  SetVehicleParamsForPlayer(559, playerid, 0, 1);
return 1;
}
if(strcmp(cmd, "/ouvre", true) == 0) {
  SendClientMessage(playerid, COLOR_RED,"ouvert");
  SetVehicleParamsForPlayer(559, playerid, 0, 0);
return 1;
}

Savez vous comment Merci
signature hors-normes (image trop grande)

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème avec le => SetVehicleParamsForPlayer
« Réponse #1 le: 15 Mai 2008, 16:40:01 »
Le fonction SetVehicleParamForPlayer doit être appelée pour chaque joueur.
Il faut verrouiller le véhicule pour tous les joueurs SAUF celui qui fait la commande "/ferme" (sinon, le joueur ne pourra pas rentrer dans le véhicule).
De plus, le permier paramètre est l'ID du véhicule, pas son type (559 voudrait dire que tu as au moins 559 véhicules sur ton serveur. C'est en dessous de la limite mais ça fait beaucoup quand même).

Au final, pour ta commande "/ferme", on aurait :
if(strcmp(cmd, "/ferme", true) == 0)
{
SendClientMessage(playerid, COLOR_RED,"Fermer");
for (new i=0 ; i<MAX_PLAYERS ; i++)
{
/* On verrouille le véhicule pour tous les joueurs */
SetVehicleParamsForPlayer (VehicleID, i, 0, 1);
}

/* On déverrouille pour le joueur qui fait la commande */
SetVehicleParamsForPlayer (VehicleID, playerid, 0, 0);
return 1;
}
NB : Je n'ai pas renseigné VehicleID car je ne sais pas comment tu fais pour avoir sa valeur.
(Pour verrouiller le véhicule dans lequel le joueur se trouve, il suffit de faire new VehicleID = GetPlayerVehicleID (playerid);)

Je te laisse faire la commande "/ouvre" (même boucle mais on déverrouille pour TOUS les joueurs).

++
Syg
Courtesy of GtaManiac

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème avec le => SetVehicleParamsForPlayer
« Réponse #2 le: 15 Mai 2008, 23:20:19 »
Bonsoir,

en faite le => 559 c'est l'id de la voiture
car je veux fermer juste les voitures des races que aucun joueur conduit si il na pas fait la commande
et si possible que le joueur entre automatiquement dans la voiture si l'id de la voiture correspond.

Je vais tester ton code

=========================
EDIT:
=========================

j'ai fait comme ca
if(strcmp(cmd, "/ferme", true) == 0)
{
SendClientMessage(playerid, COLOR_RED,"Fermer");
for (new i=0 ; i<MAX_PLAYERS ; i++)
{
        new VehicleID = 559;
/* On verrouille le véhicule pour tous les joueurs */
SetVehicleParamsForPlayer (VehicleID, i, 0, 1);
}
return 1;
}
if(strcmp(cmd, "/ouvre", true) == 0)
{
SendClientMessage(playerid, COLOR_RED,"Ouvert");
for (new i=0 ; i<MAX_PLAYERS ; i++)
{
new VehicleID = 559;
/* On déverrouille pour le joueur qui fait la commande */
SetVehicleParamsForPlayer (VehicleID, playerid, 0, 0);
 }
return 1;
}

Aucune erreur mais ca ne marche pas

Merci a toi c'est tres sympa :)

Cordialement,
InboX
« Modifié: 15 Mai 2008, 23:33:17 par inbox »
signature hors-normes (image trop grande)

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème avec le => SetVehicleParamsForPlayer
« Réponse #3 le: 16 Mai 2008, 14:15:24 »
Je ne suis pas sur que ton 559 soit l'ID d'un véhicule.
Je pencherais plutôt pour le type de véhicule (559 = jester).

SA-MP numérote les véhicules un par un en partant de 1 (pour le premier AddStaticVehicle).
Donc si tu as un véhicule avec pour ID 559, ceci veut dire que ton serveur contient au moins 559 véhicules, ce qui est énorme.

De plus chaque véhicule a un ID unique et différent donc si tu mets 559 (en admettant que tu as bien au moins 559 véhicules), c'est le même véhicule qui va être utilisé pour tous les joueurs ...
Alors que plusieurs véhicules peuvent avoir le même type.

L'ID d'un véhicule peut être obtenu soit par un appel à la fonction GetPlayerVehicleID si le joueur est dans un véhicule soit directement dans OnGameModeInit en récupérant le code retour de AddStaticVehicle.

++
Syg
Courtesy of GtaManiac

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème avec le => SetVehicleParamsForPlayer
« Réponse #4 le: 19 Mai 2008, 13:24:02 »
Dans OnPlayerEnterVehicle

j'ai fait comme ca

    if(GetVehicleModel(vehicleid) == 502)
    {
    if(level[playerid] == 0)
    {
    //TogglePlayerControllable(playerid, 0);
    SetVehicleParamsForPlayer(502,playerid,1,1);
    SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
    SendClientMessage(playerid, COLOR_WHITE, "Attention la voiture est pour les admins");
    SendClientMessage(playerid, COLOR_WHITE, "choisissez une autre voiture Merci");
    SendClientMessage(playerid, COLOR_WHITE, "Tapez /deb (Pour vous debloqué)");
    SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
    return 1;

    }else{
    SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
    SendClientMessage(playerid, COLOR_WHITE, "Bienvenue dans la voiture des admins :)");
    SendClientMessage(playerid, COLOR_WHITE, "Le Turbo sera dans la voiture dans 3 Secondes");
    SendClientMessage(playerid, COLOR_RED, "--------------------------------------------------------");
    countdown = 3;
    Compte = SetTimer("CountNos", 1000,1);
}
    return 1;
    }

Mais ca ne bloque pas les portes de la voiture Je suis Level 1 sur mon serveur c'est le Max pour le moment
si je me met a 0 = Non admin je peux quand meme prendre la voiture ce que je veux pas :(

la voiture 502 et l'id et non la 502 ème voiture des AddStaticVehicle

Alors je vous demande si vous avez une petite idée pour bloquer la voiture si le joueur a le level 0
et si le joueur a le level 1 ca debloque la voiture

Pour les level tout marche tres bien ya que pour bloquer la voiture que je sait pas comment faire

Merci a vous
signature hors-normes (image trop grande)