GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: xrf22 le 29 Juin 2010, 20:02:56
-
Bonjour à tous !
J' ai décidé de me faire un GM mais bon étant débutant, je commence fort mais bon, c' est la seule chose dont je pourrais être fière xD
Alors, j' ai voulu faire une commande de spawn de véhicule seulement, ça bug, ça me marque unknow command quand je rentre l' ID et ça me marque "ID Invalide" quand je marque juste "/vspawn" au lieu de marquer "/vspawn [ID du véhicule]"
Voici le code :
//Commande vspawn vehicule spawn
if (strcmp("/vspawn", cmdtext, true, 10) == 0)
{
new vehiculeid, idx;
if(strlen(strtok(cmdtext, idx)) == 0) {
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
return 1;
}
vehiculeid = strval(strtok(cmdtext, idx));
if (vehiculeid >= 400 && vehiculeid <= 611) {
new Float:X,Float:Y,Float:Z,Float:Angle;
new vid;
vehiculeid = strval(strtok(cmdtext, idx));
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
vid = CreateVehicle(vehiculeid,X,Y,Z,Angle,-1,-1,86400000);
PutPlayerInVehicle(playerid,vid,0);
TogglePlayerControllable(playerid,1);
if(GetPlayerInterior(playerid)) LinkVehicleToInterior(vid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(vid,GetPlayerVirtualWorld(playerid));
}
else
{
SendClientMessage(playerid, COLOR_RED, "ID Invalide.");
}
return 1;
}
Je n' arrive pas à trouver d' où viennent les erreurs =/
Merci d' avance !
-
Salut :)
if (strcmp("/vspawn", cmdtext, true, 10) == 0)
remplace par
if(strcmp(cmdtext, "/vspawn", true) == 0)
la vérification de la commande que toi tu utilise est plus utiliser dans les FS. Donne moi des nouvelles ;)
A+ Sam.
-
En faites, je suis désolé mais j' aurais du mieux cibler l' erreur ^^
Ce n' est pas cette ligne qui bug (celon moi)
Voici l' erreur ciblé :
new vehiculeid, idx;
if(strlen(strtok(cmdtext, idx)) == 0) {
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
return 1;
}
vehiculeid = strval(strtok(cmdtext, idx));
if (vehiculeid >= 400 && vehiculeid <= 611) {
new Float:X,Float:Y,Float:Z,Float:Angle;
new vid;
vehiculeid = strval(strtok(cmdtext, idx));
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
vid = CreateVehicle(vehiculeid,X,Y,Z,Angle,-1,-1,86400000);
PutPlayerInVehicle(playerid,vid,0);
TogglePlayerControllable(playerid,1);
if(GetPlayerInterior(playerid)) LinkVehicleToInterior(vid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(vid,GetPlayerVirtualWorld(playerid));
}
Lorsque j' écris "/vspawn" dans le tchat, ça me répond "ID Invalide" au lieu de "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)"
Et lorsque j' écris la bonne syntaxe avec un ID valide ou invalide, cela m' écrit "Unknow command" (commande inconnue)
Donc voilà =]
-
Oui, change la ligne et essaie s'il te plait ;)
-
Toujours pareil
toujours le même bug
-
Alors remplace
if(strlen(strtok(cmdtext, idx)) == 0) {
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
return 1;
}
par
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)"); return 1; }
-
Voici les erreurs obtenus : (en commentaires)
Comme je suis débutant, je ne me sens pas encore prêt à affronté les erreurs que j' ai du mal à comprendre seuls ^^ (surtout sans le wiki de samp même si le cache de google existe)
new tmp, vehiculeid, idx;
tmp = strtok(cmdtext, idx); //(138) : error 006: must be assigned to an array || (138) : warning 204: symbol is assigned a value that is never used: "tmp"
if(!strlen(tmp)) //(139) : error 035: argument type mismatch (argument 1)
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
return 1;
}
Enfin, avec mes compétences en programmation en d' autres langages, l' erreur de la ligne 138 engendre l' erreur de la ligne 139 car on utilise la variable tmp dans la ligne 139 qui engendre encore la troisième erreur qui dit que la variable n' est pas utilisé !
Donc si je ne me trompe faut régler l' erreur 006 de la ligne 138 ...
Seulement, je n' en ai aucune idée de comment ...
Merci d' avance de l' aide !
-
Must be indexed in a array soit array = tableau donc il doit être déclarer dans un tableau donc new tmp[128]; ;)
-
Ah c' est ça un tableau en pawn !!!!
Pfiou, je m' imaginais un truc horrible =/
J' essaie et je dis des nouvelles juste après !
Merci ^^
Double post
Bon bah non, toujours le même bug :
Lorsque j' écris "/vspawn" dans le tchat, ça me répond "ID Invalide" au lieu de "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)"
Et lorsque j' écris la bonne syntaxe avec un ID valide ou invalide, cela m' écrit "Unknow command" (commande inconnue)
-
Ah ben au moins tu as réparé des bugs sans le savoir ;)
Mais perso j'aime pas trop ta commande avec les strval etc.. sa cloche mais j'sais pas ^^
vehiculeid = strval(strtok(cmdtext, idx)); comme sa pas courant Oo
met tout simplement strval(tmp);
puisque le tmp = strtok(cmdtext, idx);
pour sa me semble bizarre, ta sortie sa d'un FS et claqué comme sa dans le GM ? :)
-
Salut,
chneubeul tu as raison sur ce qui doit être fait
mais pas sur la raison
en fait strtok te sortira un truc différent l'appel suivant.
pourquoi?
le premier strtok débute à l'index 0 (donc au début) et te sort le /vspawn. or la valeur de idx est modifié par la fonction, elle passera à 8 (je crois). Soit la première lettre/chiffre suivant l'espace après /vspawn.
Par la suite tu fais un second appel pour récupérer le modèle. Ce que tu obtient (ensuite idx est placé quelques caractères plus loin) avec le tmp = strtok.
Donc, si tu veut savoir si le joueur n'as pas entré de paramètre tu fais le test if(strlen(tmp) == 0) (tu peut aussi utiliser le define isnull que l'on trouvais sur le forum sa-mp et que je peut te recomposer si besoin...).
Par la suite, tu veut toujours travailler avec cette même valeur, si tu appèle de nouveau strtok ce ne sera pas le bon texte qu'il te sortira (un texte vide en fait comme il ne devrait plus rien avoir après le modèle). Il te faut utiliser le texte que tu avais préalablement stocké dans la variable tmp. Donc, strval(tmp)
bonne chance, si quelqu'un désire des précisions supplémentaires, n'hésitez pas à le demander.
NB. idx est ici utilisé un peu comme un pointeur, il indique à quel endroit dans le texte nous sommes rendus à séparer.
++Sim++
-
Ah ben au moins tu as réparé des bugs sans le savoir ;)
Mais perso j'aime pas trop ta commande avec les strval etc.. sa cloche mais j'sais pas ^^
vehiculeid = strval(strtok(cmdtext, idx)); comme sa pas courant Oo
met tout simplement strval(tmp);
puisque le tmp = strtok(cmdtext, idx);
pour sa me semble bizarre, ta sortie sa d'un FS et claqué comme sa dans le GM ? :)
Non, j' ai fais la commande moi même, j' avais mis des variables mais comme je n' avais pas fais de tableau, ça ne marchait alors j' avais enlevé les variables
Salut,
chneubeul tu as raison sur ce qui doit être fait
mais pas sur la raison
en fait strtok te sortira un truc différent l'appel suivant.
pourquoi?
le premier strtok débute à l'index 0 (donc au début) et te sort le /vspawn. or la valeur de idx est modifié par la fonction, elle passera à 8 (je crois). Soit la première lettre/chiffre suivant l'espace après /vspawn.
Par la suite tu fais un second appel pour récupérer le modèle. Ce que tu obtient (ensuite idx est placé quelques caractères plus loin) avec le tmp = strtok.
Donc, si tu veut savoir si le joueur n'as pas entré de paramètre tu fais le test if(strlen(tmp) == 0) (tu peut aussi utiliser le define isnull que l'on trouvais sur le forum sa-mp et que je peut te recomposer si besoin...).
Par la suite, tu veut toujours travailler avec cette même valeur, si tu appèle de nouveau strtok ce ne sera pas le bon texte qu'il te sortira (un texte vide en fait comme il ne devrait plus rien avoir après le modèle). Il te faut utiliser le texte que tu avais préalablement stocké dans la variable tmp. Donc, strval(tmp)
bonne chance, si quelqu'un désire des précisions supplémentaires, n'hésitez pas à le demander.
NB. idx est ici utilisé un peu comme un pointeur, il indique à quel endroit dans le texte nous sommes rendus à séparer.
++Sim++
Merci !
Je vais médité ce que tu m' as dis =]
Pour la fonction isnull, je la retrouverais bien dans le cache google avec un peu de recherche ^^
Mais juste parce que ça ne retourne pas la bonne valeur, ça me renvoie "unknow command" ?
Double post
J' ai trouvé où est-ce que ça bug :cop
C' est lors du strtok, ça ne fonctionne pas
Car dès que je commence à mettre un espace, la commande devient invalide donc cela prouve que il ne regarde pas après l' espace =]
Et lorsque je ne met pas d' espace, comme le strtok ne fonctionne pas, il passe direct au else{}
Le bug de merde vient de là dedans :
//Commande vspawn vehicule spawn
if(strcmp(cmdtext, "/vspawn", true) == 0)
{
new tmp[128], vehiculeid, idx;
tmp = strtok(cmdtext, idx);
Par contre, sur ce coup, je ne sais pas d' où ça vient ...
Donc là, je suis obligé de vous laisser corriger =/
-
héhé exactement Sim ! :king
Ouais j'avais pas trop compris le truc des commandes enfaites donc j'essayer d'aider mais bon.. ^^
Pour toi euh.. xrf22 ^^
envoie nous ton strtok stp
-
héhé exactement Sim ! :king
Ouais j'avais pas trop compris le truc des commandes enfaites donc j'essayer d'aider mais bon.. ^^
Quand on sait pas on se ... xD
Non je rigole lol
c' est l' intention qui compte ;)
envoie nous ton strtok stp
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
voici voilou, je l' ai mit dans a_samp.inc
Car je n' en voulais pas dans mon code ^^
-
Ton strtok il est bon, la je vois pas du tout comme sa ^^ Re met ton code mis à jour avec ce que je t'avais dit précédemment stp :)
-
Oui chef !
//Commande vspawn vehicule spawn
if(strcmp(cmdtext, "/vspawn", true) == 0)
{
new tmp[128], vehiculeid, idx;
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0)
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
}
vehiculeid = strval(tmp);
if (vehiculeid >= 400 && vehiculeid <= 611) {
new Float:X,Float:Y,Float:Z,Float:Angle;
new vid;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
vid = CreateVehicle(vehiculeid,X,Y,Z,Angle,-1,-1,86400000);
PutPlayerInVehicle(playerid,vid,0);
TogglePlayerControllable(playerid,1);
if(GetPlayerInterior(playerid)) LinkVehicleToInterior(vid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(vid,GetPlayerVirtualWorld(playerid));
}
else
{
SendClientMessage(playerid, COLOR_RED, "ID Invalide.");
}
return 1;
}
-
Remplace
if(strlen(tmp) == 0)
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
}
par
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [ID Véhicule] (pour savoir les ID des voitures, tappez /vid)");
return 1;
}
Derien mousse ! x'P
-
Le bug est toujours là :lmao
-
:wall
Go pendre le script ^^ Sérieux j'vois pas trop ^^ hééé, desfois sa vien d'une commande du dessus ou quoi essaye d'inverser les ordres de ta commande pour si c'est vraiment elle qui bug
-
:wall
Go pendre le script ^^ Sérieux j'vois pas trop ^^ hééé, desfois sa vien d'une commande du dessus ou quoi essaye d'inverser les ordres de ta commande pour si c'est vraiment elle qui bug
Par où j' accroche la corde ? ;D
Je pense que tirer dedans serait plus pratique ^^ :snip
Bon autrement j' ai essayé de changer l' ordre sans trop m' attendre à un résultats car j' ai fais d' autres commandes après et avant, et elle marche nikel ^^
Mais toujours le même bug :P
Et autrement, t' aurais pas un script tout fait ? ^^
-
Ben si x'D
new VehicleName[212][64] = {
"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana",
"Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat",
"Mr Whoopee","BF Injection","Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife",
"Trailer","Previon","Coach","Cabbie","Stallion","Rumpo","RC Bandit","Romero","Packer","Monster Truck","Admiral","Squalo",
"Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van",
"Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard",
"Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton","Regina","Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick",
"News Chopper","Rancher","FBI Rancher","Virgo","Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville",
"Benson","Mesa","RC Goblin","Hotring Racer","Hotring Racer","Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike",
"Beagle","Cropdust","Stunt","Tanker","RoadTrain","Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000",
"Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade",
"Freight","Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise",
"Merit","Utility","Nevada","Yosemite","Windsor","Monster Truck","Monster Truck","Uranus","Jester","Sultan","Stratum","Elegy","Raindance",
"RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400",
"DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer","Emperor","Wayfarer","Euros","Hotdog","Club","Trailer","Trailer","Andromada",
"Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)","Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha",
"Phoenix","Glendale","Sadler","Luggage Trailer","Luggage Trailer","Stair Trailer","Boxville","Farm Plow","Utility Trailer"
};
if(strcmp(cmd, "/veh", true) ==0 )
{
if (PlayerInfo[playerid][pAdmin] >= 1337)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COL_WHITE, "UTILISATION: /veh [nom/moedelid] [color1] [color2]");
return 1;
}
new modelid = ReturnModelByName(tmp);
if(modelid == 0)
{
SendClientMessage(playerid, COL_WHITE, "Modelid incorect! Assurer vous d'avoir mit un nom de vehicule existant ou d'un modelid corect!");
return 1;
}
new color1 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color1 = strval(tmp);
new color2 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color2 = strval(tmp);
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
GetXYFront(x, y, a, 3.0);
new Cveh = CreateVehicle(modelid,x,y,z,a,color1,color2,-1);
}
else SendClientMessage(playerid,COL_WHITE,"Vous n'ête pas autoriser a utiliser cette commande!");
return 1;
}
ReturnModelByName(const text[])
{
if (IsNumeric2(text))
{
if (strval(text) >= 400 && strval(text) <= 611)
{
return strval(text);
}
return 0;
}
new len = strlen(text);
for (new m=0;m<sizeof(VehicleName);m++)
{
if (strcmp(VehicleName[m], text, true, len) == 0)
{
return m+400;
}
}
return 0;
}
-
Je ne comprend pas :(
ça bug toujours et toujours le même bug >:(
Je viens de passer 30minutes à faire marcher le script pour rien :wall (fonction IsNumeric2 et enlèvement de la condition d' être admin)
-
Dans ce cas c'est que c'est une commande quelque part qui fait bugger toutes les autres sa m'arrivais quand je débuté ^^
-
Mais toute marche normalement =/
Je me pencherais demain dessus =]
-
C'est bizarre, a tu d'autre commmande avec le 10 comme au tout début ?
-
Oui mais j' ai déjà changer le numèro, changez la ligne
Rien n' y fait >:(
Double post
Et autrement faire un menu, tu penses que ça pourrait marcher ? :-X
-
Je pense que toutes tes autres commandes sont des commandes sans paramètres.
Ta commande est par exemple "/vspawn 522".
Cette commande est stockée dans cmdtext.
Donc le test suivant ne marchera jamais (sauf quand tu ne mets pas de paramètre à ta commande) :
if(strcmp(cmdtext, "/vspawn", true) == 0)
Solution :
Au tout début de la callback OnPlayerCommandText, il faut que tu appelles strtok pour "extraire" la commande.
Tu trouveras un exemple dans la plupart des gamemodes mais je te le donne quand même avec des commentaires :
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
/* Extraction de la commande sans ses paramètres */
cmd = strtok(cmdtext, idx);
/* Identification de la commande, le test porte sur la variable cmd qui ne
contient que le nom de la commande*/
if(strcmp(cmd, "<LA COMMANDE SANS LES PARAMETRES>", true) == 0)
{
new tmp[128];
/* Extraction du premier paramètre (Cet appel à strtok reprend là où le
précédent s'était arrêté dans la variable cmdtext - cf post de Sim)*/
cmd = strtok(cmdtext, idx);
...
}
/* Autres commandes */
}
++
Syg
-
Donc bien ce que je pensez alors ^^ J'ai jamais trop compris les commandes, avec les byts etc.. ^^ De jour en jour j'en apprend un peu plus dessus mais bon ;) Merci quand même syg j'vais me couché moins cons x'P
Sam.
-
C' est obligatoire que ce soit au début du callback ?
-
Salut :)
les new etc.. oui, car tu va les utiliser dans plusieurs commande et si tu les met au dessus le script va les chercher
-
On peut pas les mettre au début de la condition (if{ }) ?
-
Ben non le script va chercher autre que dans la commande, puis il faut définir aussi le cmd. Fais ce que l'on a dit et sa ira ^^ T'aura juste à écrire tes commandes avec le format que j't'ai filer
-
Salut !
Désolé de reprendre le scripting un Dimanche mais bon =]
Alors, j' ai fais ce que vous m' avez dit, cette fois-ci on a l' air d' avoir avancé ^^
Voici la nouvelle commande (en gardant ta commande que tu m' avais donné Chneubeul) :
//Commande /vspawn voiture véhicule
if(strcmp(cmd, "/vspawn", true) == 0)
{
new tmp[128];
/* Extraction du premier paramètre (Cet appel à strtok reprend là où le
précédent s'était arrêté dans la variable cmdtext - cf post de Sim)*/
cmd = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [nom/ID] [couleur1] [couleur2]");
return 1;
}
new modelid = ReturnModelByName(tmp);
if(modelid == 0)
{
SendClientMessage(playerid, COLOR_RED, "ID incorect ! Assurez vous d' avoir écrit un nom/ID Correct !");
return 1;
}
new color1 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color1 = strval(tmp);
new color2 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color2 = strval(tmp);
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
CreateVehicle(modelid,x,y,z,1,color1,color2,-1);
return 1;
}
Sauf que la fonction "strlen(tmp)" est toujours = a 0
Même si je rentre une commande ou pas
Que je rentre un ID correct ou incorrecte, le serveur m' affiche toujours la phrase "UTILISATION: /vspawn [nom/ID] [couleur1] [couleur2]"
-
oula je sais pas du tout, je connais pas trop les commandes ^^
-
Je suis pas encore un pro des "cmd" je suis plutôt "cmdtext" :-[ mais je pense que tu a foiré vers le "if" qui dit le message "UTILISATION: /vspawn [nom/ID] [couleur1] [couleur2]" vérifie bien ce if ...
Je l' ai changé et devine ce que ça fait !
Que dalle >:(
Double post
Chneubeul, je crois bien qu' on a eu un manque d' attention
J' ai voulu tester ce que renvoyer la variable "tmp"
Et elle renvoyait la valeur "0"
Pourquoi ?
cmd = strtok(cmdtext, idx);
On ne doit pas extraire les paramètres de la commande dans la variable "cmd" mais dans la variable "tmp"
Donc fallait écrire :
tmp = strtok(cmdtext, idx);
Maintenant ça donne :
//Commande /vspawn voiture véhicule
if(strcmp(cmd, "/vspawn", true) == 0)
{
new tmp[128];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_RED, "UTILISATION: /vspawn [nom/ID] [couleur1] [couleur2]");
return 1;
}
new modelid = ReturnModelByName(tmp);
if(modelid == 0)
{
SendClientMessage(playerid, COLOR_RED, "ID incorect ! Assurez vous d' avoir écrit un nom/ID Correct !");
return 1;
}
new color1 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color1 = strval(tmp);
new color2 = 0;
tmp = strtok(cmdtext, idx);
if(strlen(tmp)) color2 = strval(tmp);
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
CreateVehicle(modelid,x,y,z,1,color1,color2,-1);
return 1;
}
Et ça marche nikel :D