GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Sismix84 le 27 Octobre 2007, 18:41:29

Titre: Commande de réparation véhicule
Posté par: Sismix84 le 27 Octobre 2007, 18:41:29
bonsoir, je me suis fait une commande pour réparer son véhicule

if (strcmp("/rep", cmdtext, true, 10) == 0)
{
SetVehicleHealth(playerid, 1000);
GivePlayerMoney(playerid, -1500);
SendClientMessage(playerid, COLOR_GREEN, "Kit de réparation acheté.");

return 1
}
mais il y a une erreur et je n'arrive pas a la résoudre

C:\Program Files\Rockstar Games\GTA San Andreas\samp022server.win32\gamemodes\Sismix84.pwn(743) : error 001: expected token: ";", but found "}"
est ce que quelqu'un peut m'aider ?
Titre: Re : Commande de réparation véhicule
Posté par: NatiVe™ le 27 Octobre 2007, 19:51:52
Voila pour toi :

if (strcmp(cmdtext, "/rep" , true, 4) == 0){
 
SetVehicleHealth(playerid, 1000);
GivePlayerMoney(playerid, -1500);
SendClientMessage(playerid, COLOR_GREEN, "Kit de réparation acheté.");

return 1;
}

AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: Sismix84 le 27 Octobre 2007, 20:05:24
euh je ne voit pas ce que tu as changé dans mon script mais ça marche  :laugh

Merci

PS : tu as changer quoi au fait ? :blink

EDIT : a oui je voit, le ";" à la fin de "return 1", mais comment j'ai fait pour oublier ça ?  :-[ quel boulet que je suis  :bangin
Titre: Re : Re : Commande de réparation véhicule
Posté par: NatiVe™ le 27 Octobre 2007, 20:23:19
EDIT : a oui je voit, le ";" à la fin de "return 1"

Nan pas que ca !

J'ai changer ca :

   if (strcmp("/rep", cmdtext, true, 10) == 0)   
Par ca :

   if (strcmp( cmdtext, "/rep", true, 4) == 0)   
J'ai deplacer le cmdtext et j'ai mis  true, 4 au lieu de true, 10

Il y a 3 lettre donc true, 4

Et c'est a cause de ca que l'on voi que tu n'as pas créer la commande mais que c'est du copier / coller !


AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: UrbanGhetto le 27 Octobre 2007, 21:14:00
Sismix ton code n'est pas très efficace car si le joueur a 0$ il ira dans les -1500$ je ne vais pas te donner la correction du code complet mais juste un indice : GetPlayerMoney(playerid) A toi de voir  :)
Titre: Re : Commande de réparation véhicule
Posté par: Syg le 27 Octobre 2007, 22:09:28
Arsenik, ne serais-tu pas devenu un spécialiste du strcmp ?  :)
Le coup du 4 à la place du 10 : chapeau, c'est le genre d'erreur con qu'on met 3 heures à trouver.
Mais juste pour ton information : ce n'était pas la peine d'inverser "/rep" et cmdtext .... ça revient au même.

++
Syg
Titre: Re : Commande de réparation véhicule
Posté par: NatiVe™ le 27 Octobre 2007, 22:14:53
Chacun a sa maniere de Coder ;)

AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: Sismix84 le 27 Octobre 2007, 23:16:32
Merci Arsenik, tu as résond, j'ai fait du copier/coller mais d'une autre commande de mon script.

Merci aussi à toi Urban, je connais la suite.

PS : je n'ai pas très bien compris la partie du code true, 4, je ne comprend pas en quoi elle consiste  :blink.
Titre: Re : Commande de réparation véhicule
Posté par: spykerc8 le 27 Octobre 2007, 23:18:59
À indiquer le nombre de caractères de la commande pour vérifier si elle fait la même longueur.
('fin me semble que c'est ça, Syg confirmera ou infirmera)
Titre: Re : Commande de réparation véhicule
Posté par: NatiVe™ le 27 Octobre 2007, 23:41:30
J'aurais dit aussi :

Citer
À indiquer le nombre de caractères de la commande pour vérifier si elle fait la même longueur.

et

Toujours mettre 1 chiffre de plus pour le / !

AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: Syg le 28 Octobre 2007, 01:53:23
C'est pas tout à fait ça.

La fonction strcmp, comme son nom l'indique sert à comparer des chaînes de caractères (string compare).
Les paramètres sont donc les deux chaînes à comparer, puis un indicateur pour savoir si on fait la différence entre majuscule et minuscule et enfin, dernier paramètre, le nombre de caractères à comparer.
Et dans ce cas, la longueur des deux chaînes importe peu, pourvu qu'elles fassent toutes les deux au moins 4 caractères.

Dans le cas qui nous occupe, on veut comparer ce qu'a saisi le joueur (cmdtext) avec la chaîne "/rep" qui contient 4 caractères : le /, le r, le e et le p.
Donc strcmp (cmdtext, "/rep", true, 4);
NB : la valeur true du troisième paramètre indique que l'on ne veut pas faire la différence entre majuscules et minuscules (ce qui veut dire que /REP, /Rep, /reP, ... sont toutes équivalentes).

Mais attention, avec le test ci dessus, si le joueur saisi "/reparer", "/repair", "/repetition" ou "/repense à tes vacances",  la commande sera exécutée puisqu'on ne compare que le 4 premier caractères.

Pour être sur que notre script ne prenne en compte que la commande "/rep", il faudrait utiliser la ligne suivante :
strcmp (cmdtext, "/rep", true);
Le 4 à disparu. Ceci indique au script qu'il doit faire la comparaison jusqu'au dernier caractère de la chaîne la plus courte.

Mais laisser le 4 permet d'accepter les commandes "/rep", "/repair", "/reparation", "/reparer" qui sont toutes valables.

++
Syg
Titre: Re : Commande de réparation véhicule
Posté par: UrbanGhetto le 28 Octobre 2007, 07:28:19
Syg nous apprend un nouveau truc comme d'habitude  :)
Titre: Re : Commande de réparation véhicule
Posté par: R@f le 28 Octobre 2007, 09:54:49
dommage que syg n'est pas mon prof d'informatique  :laugh
Titre: Re : Commande de réparation véhicule
Posté par: NatiVe™ le 28 Octobre 2007, 10:47:13
Lol

Citer
" /repense à tes vacances "

Je pense pas que les PlayerS vont aller faire cette commande pour repare leurs vehicule lool !  :laugh

AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: Sismix84 le 28 Octobre 2007, 16:33:10
Merci beaucoup Syg pour tes explications, et sans oublier Arsenik et Urban :D
Titre: Re : Re : Commande de réparation véhicule
Posté par: Syg le 29 Octobre 2007, 01:41:16
Lol

Je pense pas que les PlayerS vont aller faire cette commande pour repare leurs vehicule lool !  :laugh

AK NV.

Y'a aussi "/repasse tes chemises", "/repeints la porte du garage", "/reproduction assexuée" (comme les escargots) ou "/repartiteur à expansion de gel polychloré" (celui là n'a encore jamais été inventé mais il serait surement bien utile).

++
Syg
Titre: Re : Commande de réparation véhicule
Posté par: [StAfF]MaN le 29 Octobre 2007, 01:43:25
LOL ^^ n'empèche repasse tes chemise sa serais bien pratique des fois ^^
Titre: Re : Commande de réparation véhicule
Posté par: Syg le 29 Octobre 2007, 02:02:07
Malheureusement, ça ne fera que réparer ton véhicule .....  :(

++
Syg
Titre: Re : Commande de réparation véhicule
Posté par: spykerc8 le 29 Octobre 2007, 02:21:49
"/metpasdechemisesygtoutefaconlesinformaticienssontdescradauxpaspropresetassociablesalorstoutlemondesenfoudeleurschemises"


 :lmfao






 :dejadehors
Titre: Re : Commande de réparation véhicule
Posté par: R@f le 30 Octobre 2007, 15:17:20
sa rentre au moin dans la chat box ?  ::) (moin de 126 caractères)
Titre: Re : Re : Commande de réparation véhicule
Posté par: Syg le 30 Octobre 2007, 15:35:49
"/metpasdechemisesygtoutefaconlesinformaticienssontdescradauxpaspropresetassociablesalorstoutlemondesenfoudeleurschemises"

Hey, ça ne commence même pas par "/rep" !!
Donc ta commande ne marchera pas Spyker. :)

En plus, aujourd'hui j'ai une chemise ....

++
Syg
Titre: Re : Commande de réparation véhicule
Posté par: R@f le 30 Octobre 2007, 17:40:19
moi j en ai une  :D

/repand ton rhume ^^

PS : je suis justement en train de copier mes verbes -_- (répandre)

 :dejadehors
Titre: Re : Commande de réparation véhicule
Posté par: NatiVe™ le 30 Octobre 2007, 18:06:58
Il y en a d'autre !

" /repeint le mur " " /repasse me voir " " /repasse le linge " " /repare tu samedi ? " ...

Rapport avec le sujet ?

" /repare moi cette voiture "

:) :) :) :)

AK NV.
Titre: Re : Commande de réparation véhicule
Posté par: Sismix84 le 30 Octobre 2007, 18:28:18
je vois que mon sujet fait un maleur. LOL

PS : DSL Urban mais je n'arrive pas a faire ma commande avec le GetPlayerMoney(playerid)