• 05 Juin 2026, 21:43:53


Auteur Sujet: Problème a la création d'une voiture  (Lu 2810 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 a la création d'une voiture
« le: 04 Juin 2008, 08:08:26 »
Bonjour,

Souvent quand je créer ma voiture certain joueur s'amuse a me la piquer
alors j'ai penser au kick mais juste pour ca je ne veux pas en abuser
car c'est le jeu

j'ai la commande suivant que j'ai re fait depuis
if(strcmp(cmd,"/vt",true) == 0)
{
new veh;
new Float:X;
new Float:Y;
new Float:Z;
new Float:A;
new tmp[256];
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
tmp = strtok(cmdtext, idx);
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid,COLOR_RED,"Identifiez vous avant /login <passe>");
return 1;
}
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_WHITE,"SERVER: /vt [de 401 a 611]");
SendClientMessage(playerid,COLOR_WHITE,"Exemple: /vt 559");
return 1;
}
veh = strval(tmp);
if(veh < 401 || veh > 611)
{
SendClientMessage(playerid,COLOR_WHITE,"SERVEUR: Tapez un numero de 401 a 611.");
return 1;
}
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i) == 1 && IsPlayerInAnyVehicle(i) == 1)
{
RemovePlayerFromVehicle(i);
}
}
if(delvoiture[playerid] == 1)
{
DestroyVehicle (addvoiture[playerid]);
}
addvoiture[playerid] = CreateVehicle(veh,X,Y,Z,A,120,85,400);
PutPlayerInVehicle(playerid,addvoiture[playerid],0);
delvoiture[playerid] = 1;
return 1;
}

j'ai meme essayer avec
for(new i=0;i<MAX_PLAYERS;i++){
if(IsPlayerConnected(i) == 1 && IsPlayerInAnyVehicle(i) == 1){
RemovePlayerFromVehicle(i);

mais quand je fait ceci ca me fait planter mon gta car le joueur est toujours dans ma voiture :(
et c'est moi qui plante si je re créer une autre voiture.

Savez vous comment faire ?

Merci
« Modifié: 04 Juin 2008, 08:23:17 par inbox »
signature hors-normes (image trop grande)

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Problème a la création d'une voiture
« Réponse #1 le: 04 Juin 2008, 13:58:45 »
OnPlayerEnterVehicle, if(vehicleid == tonvehicule), SetPlayerPos(playerid, x,y,z+10) :)

++
Alexandre

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème a la création d'une voiture
« Réponse #2 le: 04 Juin 2008, 17:00:35 »
Je ne vois pas l'utilité de sortir TOUS les autres joueurs de leurs véhicules quand toi tu en crées un.

A moins que les véhicules ne soient pas autorisés sur ton serveur et que seul les admins y aient droit (si c'est le cas, un test de IsPlayerAdmin dans OnPlayerEnterVehicle devrait suffire).

Pour le plantage, je ne vois pas ce qui peux faire planter à part peut-être la destruction d'un véhicule avec un joueur dedans.
Par contre, il faut peut-être temporiser car il se peut que le joueur mette du temps à "sortir" du véhicule.


++
Syg
Courtesy of GtaManiac

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème a la création d'une voiture
« Réponse #3 le: 04 Juin 2008, 20:22:09 »
Salut,

tout le monde a droit aux voitures
le probleme c'est quand j'en crée une on me la prend
et si j'en re créer une autre par dessus je plante :(

Sinon tempis pour moi

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 a la création d'une voiture
« Réponse #4 le: 04 Juin 2008, 22:41:05 »
Sur Lalu, on a désactivé la création dynamique de véhicules car le DestroyVehicle crashe dans certains cas (je n'ai pas investigué cette partie là, c'était Spyker qui avait trouvé ce bug à l'époque).

Ton problème vient certainement de là.

Essaies de ne pas faire le DestroyVehicle pour voir si c'est lui qui fait crasher.
Par contre, attention à la limite des 700 véhicules et 70 types .... !!

++
Syg
Courtesy of GtaManiac

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème a la création d'une voiture
« Réponse #5 le: 05 Juin 2008, 06:53:31 »
Bonjour,

Ok je vais essayer et merci pour ton aide :)
j'avais penser a faire une limite par joueur
avec
            if(PlayerInfo[playerid][Voitures] > 1)
            {
            SendClientMessage(playerid,COLOR_WHITE,"SERVEUR: Vous ne pouvez pas avoir plus de 2 Voitures");
            SendClientMessage(playerid,COLOR_WHITE,"SERVEUR: Tapez /delvoiture");
    return 1;
}
new file[256];
new nombre;
new name[MAX_PLAYER_NAME];
nombre = PlayerInfo[playerid][Voitures]+=1;
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"Users/%s.txt",name);
            dini_IntSet(file,"Voitures",nombre);
new vehid;
vehid = CreateVehicle(veh,X,Y,Z,A,-1,-1,50000);
PutPlayerInVehicle(playerid,vehid,0);
            return 1;
    }

Voila j'ai fait comme ca ca marche mieux
le probleme c'est que les voitures vont rester sur le serveur tant que j'ai pas restart le serveur

vivement qui répare se GROS bug Samp car le DestroyVehicle sert a rien en faite
si a fair planter les joueurs pfff

Cordialement,
« Modifié: 05 Juin 2008, 08:20:20 par inbox »
signature hors-normes (image trop grande)

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème a la création d'une voiture
« Réponse #6 le: 05 Juin 2008, 09:28:33 »
Désolé pour le double sujet
mais je viens de voir que dans mon GM j'avais pas mis le
#include <a_vehicles>

c'est sans doute pour ca que je plante si un joueur me prend ma voiture et j'en créer une autre ?

Vous en pensez quoi ?

Cordialement,
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 a la création d'une voiture
« Réponse #7 le: 05 Juin 2008, 09:54:44 »
Non, le fait que tu es oublié de mettre un include n'a rien à voir avec tes plantages.

Un include contient les déclarations des fonctions et la définition des contstantes et ne sert qu'au moment de la compilation.
Et si le compilo ne trouve pas une fonction ou un define car il manque un include, tu ne pourras pas générer ton .AMX.

++
Syg
Courtesy of GtaManiac

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Re : Problème a la création d'une voiture
« Réponse #8 le: 05 Juin 2008, 22:45:32 »
Pour le plantage, je ne vois pas ce qui peux faire planter à part peut-être la destruction d'un véhicule avec un joueur dedans.

Salut, tu parles d'un crash côté client ou serveur ?
Car j'ai remarqué que quand j'entre dans un véhicule en flamme GTA:SA se ferme. :)

++
Alexandre

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème a la création d'une voiture
« Réponse #9 le: 06 Juin 2008, 09:45:33 »
On fait quand on parle de destruction ici, on parle d'un appel à la fonction DestroyVehicle, pas de sa destruction physique.
Mais effectivement il existe plein de cas où SA-MP client plante soit à cause du script soit spontanément.

++
Syg
Courtesy of GtaManiac

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : Problème a la création d'une voiture
« Réponse #10 le: 06 Juin 2008, 13:15:45 »
Oui nous parlons de la déstruction de la voiture si ya un joueur dedans le joueur qui la creer plante
automatiquement chez moi certain joueur l'on tester et ca leur fait pareil.

Dommage que samp arrete leur projet
car c'est une commande tres utile comme les autres d'ailleurs.

M'enfin bon c'est comme ca

Cordialement,
signature hors-normes (image trop grande)

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Problème a la création d'une voiture
« Réponse #11 le: 07 Juin 2008, 07:30:36 »
Salut,

fais une fonction IsDrived(vehicleid), en bas de la fonction met return false;, et en haut fait une boucle while qui continu tant que le nombre de joueurs max n'est pas atteint ou que la fonction de retourne pas true, dedans tu regardes si le joueur est dans vehicleid, s'il y est la fonction retournera true.

Ensuite dans ton code, avant le DestroyVehicle tu fait une condition pour voir si IsDrived(vehicleid) est vraie, si c'est le cas tu enlève le joueur de sa caisse. :)

++
Alexandre