GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Xx_Men_xX le 22 Mai 2013, 20:29:53
-
Bonsoir,
Alors, j'ai un petit soucis. Je voulait que lorsqu'un joueur entre dans un véhicule, un message s'affiche, donc j'ai fais ceci :
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) //Quand le joueur entre dans un véhicule
{
vehicleid = GetPlayerVehicleID(playerid); //Je récupère l'ID du véhicule
if(vehicleid == 402) //Si l'ID du véhicule est égal à 402(Buffalo)
{
SendClientMessage(playerid, JAUNE, "Vous etes entré dans une Buffalo"); //J'affiche ce message
}
return 1;
}
Conclusion, rien ne s'affiche quand je rentre dans une Buffalo. Alors j'ai essayé un autre truc :
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) //Quand le joueur est dans un véhicule en conducteur
{
if(GetPlayerVehicleID(playerid) == 402) //Je récupère l'ID du véhicule, et si, celle-ci est égal à 402
{
SendClientMessage(playerid, JAUNE, "Vous etes entrée dans une Buffalo"); //J'affiche ce message
}
}
return 1;
}
Sa ne marche toujours pas, ensuite j'ai essayé avec newstate == PLAYER_STATE_ENTER_VEHICLE_DRIVER et sa ne marche pas non plus. Je ne sais ce qui vas pas, j'ai du oublier un truc, mais je ne sais pas quoi.
Quelqu'un a t-il une idée ?
Je vous remercie d'avance pour votre aide.
-
Salut,
Essaie peut être avec juste if(newstate == PLAYER_STATE_DRIVER)
Parce que le joueur n'a pas le statut ONFOOT quand il entre dans le vehicule, regarde ca :
4 Player exits a vehicle - "PLAYER_STATE_EXIT_VEHICLE"
5 Player enters a vehicle as driver - "PLAYER_STATE_ENTER_VEHICLE_DRIVER"
6 Player enters a vehicle as passenger - "PLAYER_STATE_ENTER_VEHICLE_PASSENGER"
-
Salut :)
Tu n'utilises tout simplement pas la bonne fonction :
GetPlayerVehicleID(playerid) -> store l'id du véhicule et non le modelid
GetPlayerVehicleModel(vehicleid /*ou GetPlayerVehicleID(playerid)*/) -> envoie le modelid correspondant à l'id en params
A+, Sam.
:medieval_sword2:
-
Je n'ai pas vu ca, shame on me ! :dry:
-
Salut :)
Tu n'utilises tout simplement pas la bonne fonction :
GetPlayerVehicleID(playerid) -> store l'id du véhicule et non le modelid
GetPlayerVehicleModel(vehicleid /*ou GetPlayerVehicleID(playerid)*/) -> envoie le modelid correspondant à l'id en params
A+, Sam.
:medieval_sword2:
Coucou,
J'ai trouvé comment résoudre mon problème, tu m'a mis sur la bonne piste. La fonction
GetPlayerVehicleModel()
N'existe pas :) Tu a surement confondue avec :
GetVehicleModel()
Donc voilà la solution :
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(GetVehicleModel(vehicleid) == 402) //Si le modèle du véhicule est égale à 402. Il falait juste récupéré le modèle du véhicule et non l'ID, avec la fonction GetVehicleModel()
{
SendClientMessage(playerid, 0x0000FFFF, "Vous etes entré dans une Buffalo"); //On affiche ce message
}
return 1;
}
-
Salut,
oui excuse moi entre GetPLAYERvehicleID et GetVehicleModel, j'ai pas fait exprès :p j'me suis pas relu.
Ce que je te propose c'est de rendre le message dynamique en utilisant une boucle.
J'explique :)
Tu créé un array avec tous les noms des véhicules ( ça se trouve genre VehicleNames[][]) quelques choses comme ça.
Puis dans OnPlayerStateChange (c'est mieux pour vérifier si le joueurs est dans le véhicule :p ) tu récupère le modelid auquel tu soustrais 400 et tu à l'index dans l'array pour avoir le bon nom de véhicule.
exemple : Tu entres dans une buffalo, tu récupère l'id tu sais que c'est 402.
Dans ton array ça se présente comme ça : vNames[611][64] = {"Landstalker", "Bravura", "Buffalo".. etc..
hors dans l'array la buffalo à l'index 2 donc tu fais 402-400 = 2 -> le nom du véhicule 402 est alors vNames[2]
Essaie de faire le script, je t'aiderais à le faire, si je n'ai pas été assez explicite ou si tu es complétement paumés :D
A+, Sam.
:medieval_sword2:
-
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
{
if(GetVehicleModel(newvehicleid) == 515)
{
SendClientMessage(playerid, tacouleur, "message");
}
}
return 1;
}
Raison de l’édit : Mise du code sous les balises code.
-
C'était résolu Carnage ...
-
bah j'ai vue qu'il avait besoin d'aide et je connaissait la solution. donc pas de cassage de tete a lire un roman.
merci a celui qui lui a donner la solution avant moi
-
bah j'ai vue qu'il avait besoin d'aide et je connaissait la solution. donc pas de cassage de tete a lire un roman.
merci a celui qui lui a donner la solution avant moi
Apporté une solution c'est bien, mais apport-elle plus par rapport à ce qui a été énoncé plus haut ?
-
bah j'ai vue qu'il avait besoin d'aide et je connaissait la solution. donc pas de cassage de tete a lire un roman.
merci a celui qui lui a donner la solution avant moi
Apporté une solution c'est bien, mais apport-elle plus par rapport à ce qui a été énoncé plus haut ?
wow... explique ou j'ai dit que ma solition apportais plus ?
avant d'etre sur un forum , le necessaire n'est pas de savoir lire ?
si non y'a toujours les ebook..........
bon des attardé j'en ai vue assé ici chow bye last connection
-
avant d'etre sur un forum , le necessaire n'est pas de savoir lire ?
Ah si si c'est vrai. C'est là qu'on voit l'inutilité de ta réponse, car tu postes la solution juste après une autre solution qui fonctionne très bien. Tu marques un point :thumbup:
-
Le fait de poster deux fois la même solution, tu trouve ça utile ?
Tu aurais posté une solution qui diffère de la première, aucun soucis, mais c'est exactement la même chose.
Je suis pas là pour te rabaissé, j'encourage les membres à aider et ce que tu fais est très bien, mais pas forcément utile ici.