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
-
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
-
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.
-
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.
-
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)
-
On va m'engueuler, mais up ? xD
-
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
-
ok merci quand meme
-
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
-
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 ^^