GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 05 Novembre 2010, 13:58:05

Titre: OnVehicleMod defectueuse?
Posté par: scott1 le 05 Novembre 2010, 13:58:05
Bonjour à toute et à tous,

je suis en train de faire un systeme que quand un joueur, met de la nitro sur son véhicule, ça le supprime automatiquement

j'ai donc fait

public OnVehicleMod(playerid, vehicleid, componentid)
{
if(componentid == 1008 || componentid == 1009 || componentid == 1010)
{
    RemoveVehicleComponent(vehicleid,componentid);
    return 1;
}

le soucis s'est que ça ne fonctionne pas.

J'ai donc tester


if(componentid == 1008 || componentid == 1009 || componentid == 1010)
{
    SetTimerEx("EnleverElementTuning", 1000, false, "ii", vehicleid,componentid); SendClientMessage(playerid,bleuvert,"On lance la suppresssion 3");
    return 1;
}

public EnleverElementTuning(vehicleid,componentid)
{
    RemoveVehicleComponent(vehicleid,componentid);
    printf("apres la suppresssion");
}


ça ne fonctionne toujours pas, j'ai donc essayer comme ceci

public EnleverElementTuning(vehicleid,componentid)
{
    RemoveVehicleComponent(vehicleid,1010);
    printf("apres la suppresssion");
}

et la ça fonctionne uniquement quand je sort du transfander tout de suite apres avoir mis le mods, si non il reste.


savez vous ce qui cloche?

Merci d'avance
Titre: Re : OnVehicleMod defectueuse?
Posté par: Myk3L le 05 Novembre 2010, 18:26:00
et la ça fonctionne uniquement quand je sort du transfander tout de suite apres avoir mis le mods, si non il reste.

C'est normal je crois, car la callback est appeler dès que l'on sort d'un transfander, arch angels (c'est ça ?) ou un garage du genre il me semble.
Titre: Re : OnVehicleMod defectueuse?
Posté par: vardanega le 05 Novembre 2010, 18:39:35
Bonsoir, oui il et précisez sur le wiki sa:mp que la callback et appelé quand un véhicule et "moddé".

Source: http://wiki.sa-mp.com/wiki/OnVehicleMod (http://wiki.sa-mp.com/wiki/OnVehicleMod)

Vincent.
Titre: Re : Re : OnVehicleMod defectueuse?
Posté par: scott1 le 05 Novembre 2010, 19:15:56

Oui donc ça devrais fonctionner...

et la ça fonctionne uniquement quand je sort du transfander tout de suite apres avoir mis le mods, si non il reste.

C'est normal je crois, car la callback est appeler dès que l'on sort d'un transfander, arch angels (c'est ça ?) ou un garage du genre il me semble.


Non ça s'est

OnEnterExitModShop(playerid,enterexit,interiorid)
Titre: Re : OnVehicleMod defectueuse?
Posté par: scott1 le 08 Novembre 2010, 10:10:23
On va m'engueuler, mais up ? xD
Titre: Re : OnVehicleMod defectueuse?
Posté par: cristab le 08 Novembre 2010, 10:50:25
au pire garde ceci

public EnleverElementTuning(vehicleid,componentid)
{
    RemoveVehicleComponent(vehicleid,componentid);
    printf("apres la suppresssion");
}

mais tu met une boucle pour tout les vehicule et tu fais ceci avec un timer ou alors tu le fait pour que des que l'on appuie sur la touche nitro ben sa le retire
Titre: Re : OnVehicleMod defectueuse?
Posté par: scott1 le 08 Novembre 2010, 11:13:29
ok merci quand meme
Titre: Re : OnVehicleMod defectueuse?
Posté par: Syg le 09 Novembre 2010, 11:20:12
Voici un bout de code simple, qui fonctionne et qui enlève la nitro d'un joueur lorsqu'il sort d'un transfender :
public OnEnterExitModShop (playerid, enterexit, interiorid)
{
new componentid = GetVehicleComponentInSlot (GetPlayerVehicleID (playerid), 5); // Nitro
if(componentid == 1008 || componentid == 1009 || componentid == 1010)
{
RemoveVehicleComponent (GetPlayerVehicleID (playerid), componentid);
SendClientMessage (playerid, 0xFF0000FF, "Nitro supprimée");
}
return 1;
}

Par contre, la callback OnVehicleMod n'est appelée que si le joueur est dans un transfender et (comme scott a pu le voir), c'est une mauvaise idée de supprimer les modifications alors que le joueur n'est pas encore sortie du transfender.

La seule solution pour supprimer la nitro ajoutée par un autre moyen (dans le cas d'une commande d'ajout ou d'un cheat, aucune callback n'est appelée), c'est de faire une boucle dans un timer qui vérifie toutes les secondes (ou moins) si chaque véhicule à de la nitro et l'enlève le cas échéant. Cette boucle est construite sur le même principe qu'une boucle qui retire les armes des joueur.

++
Syg
Titre: Re : OnVehicleMod defectueuse?
Posté par: scott1 le 09 Novembre 2010, 11:35:57
J'ai gardé mon timer qui est lancé quand il sort ^^.

Mais je me suis dit, il y a moyen de frauder, s'est tordu mais bon, si il /q dans le transfander xD

Si non j'ai essayer de supprimer des mods directement dans le tuning, le dernier supprimer est rajouté quand on sort ^^