GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Raptor le 23 Janvier 2011, 18:43:54
-
Bonsoir.
Je suis en train de scritper un script pour mettre une casquette. /chapeau1 .... ect. Mais certaines casquettes ne marche pas avec un skin ( le casquette ne se pose pas sur la tete du personnages ect. J'ai fait un liste des skin qui marche, et je voudrais ajouter un truc du genre.
/chapeau 1
> Si la personne n'a pas le skin 0;9 ect ... ( les skin qui marche) Une phrase mettra "ce chapeau ne peut pas être utilisé avec ce skin"
> Si la personne a un skin utilisable .... " Vous acheter un chapeau, il vous vas a merveille "
Les phares, je sais les faie avec les SendClientMessage, mais mettre les skin utilisable ou pas, je n'arrive pas. Merci de m'aider. Voilà mon scripte.
Ce n'est qu'un scripte de base, le scripte sera ensuite adapter au GM GF de mon serveur.
http://pastebin.gtaonline.fr/pastebin.php?show=1009 (http://pastebin.gtaonline.fr/pastebin.php?show=1009)
-
Personne ne peut m'aider ?
-
if(GetPlayerSkin(playerid)==9)
{
//Impossible
}
else
{
//La tu met le skin
}
-
Tu fais un tableau avec les id de tous les skins autorisés, puis tu fais comme Eloctro t'as dis, sauf que si c'est le bon skin autoriser, sinon impossible, donc l'inverse x)
-
encore mieux
ValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid)
if(skintype == 0 || skintype == 9)
{
return 0;
}
return 1;
}
dans ta commande
if(ValidSkin(playerid))
{
//ton code
}
else
{
error
}
-
Ok, merci, je vais essayer et l'adapter au Gamemode et je vous dis si ca marche. Merci beaucoup.
EDIT: Tu pourrais me faire un exemple ? J'ai des erreure. J'ai mis ca.
if(ValidSkin(playerid))
{
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
SetPlayerAttachedObject(playerid,1 , 18933, 2, 0.14, 0, -0.005, 0, 0, 0); //ton code
}
else
{
error
}
Et lors de la compile, ca me met
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(12) : error 001: expected token: ";", but found "public"
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(36) : error 012: invalid function call, not a valid address
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(36) : warning 215: expression has no effect
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(36) : error 001: expected token: ";", but found ")"
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(36) : error 029: invalid expression, assumed zero
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(36) : fatal error 107: too many error messages on one line
-
euh je t'ai mis l'exemple justement relit mon post je peu pas mieux faire
-
Oui, j'ai bien fais pour la liste des skin, mais lorsque je met sur ma commande, ca ne marche pas, c'est bien comme ca que ca ce met ?
-
encore mieux
ValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid)
if(skintype == 0 || skintype == 9)
{
return 0;
}
return 1;
}
dans ta commande
if(ValidSkin(playerid))
{
//ton code
}
else
{
error
}
pas du tout relit mieux
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
{
if(ValidSkin(playerid))
{
//ton code
}
else
{
error
}
return 1;
}
-
J'ai fais ce que tu ma dis.
Mais voilà le soucie
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
{
if(ValidSkin(playerid))
{
SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0); //ton code
}
else
{
error
}
return 1;
}
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(40) : error 012: invalid function call, not a valid address
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(40) : warning 215: expression has no effect
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(40) : error 001: expected token: ";", but found ")"
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(40) : error 029: invalid expression, assumed zero
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(40) : fatal error 107: too many error messages on one line
-
relit mon code il y a une erreure pour eviter le copier coller sans comprehension
-
Je ne vois pas l'erreur, les accolade son bien mis pourtant. Tu pourrais m'expliquer le ValidSKin... Car je n'ai jamais eu l'occasion de scripter ca.
-
ValidSkin(playerid)
{
new skintype; // Creation de la variable
skintype = GetPlayerSkin(playerid) // On enregistre le skin du joueur dans la variable
if(skintype == 0 || skintype == 9) // si le skin est egal a 0 ou a 9 alors ....
{
return 0; // on retourne 0(false = faux), cela veux dire que le skin n'est pas compatible avec la casquette
}
return 1; // Si le skin n'est pas egal a 0 ou 9 alors on retourne 1(true = vrai), donc la casquette est compatible avec le skin
}
PS: j'ai vu direct l'erreur, mais je ne l'ai pas corriger, a toi de le faire.
++
-
> Si la personne n'a pas le skin 0, 9 ect ... (les skin qui marche) Une phrase mettra "ce chapeau ne peut pas être utilisé avec ce skin"
> Si la personne a un skin utilisable .... " Vous acheter un chapeau, il vous vas a merveille "
En gros, vous n'avez pas compris son problème. Vous avez compris l'inverse. Comme base, par de ça :
HaveGotAValidSkin(playerid)
{
new skintype; // Création de la variable
skintype = GetPlayerSkin(playerid) // On donne comme valeur à la variable skintype le skin du joueur dans la variable
if(skintype == 0 || skintype == 9 || ...) // Si le skin est egal a 0 ou a 9 alors ....
{
return 1; // on retourne 1 (true = vrai), cela veux dire que le skin n'est pas compatible avec la casquette
}
else SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau"); return 0; // Si le skin n'est pas égal a 0 ou 9 alors on retourne 0 (false = faux), donc la casquette n'est pas compatible avec le skin
}
Avec un SendClientMessage directement dans la fonction, ça évitera les copier/coller.
Utilisation :
if(HaveGotAValidSkin(playerid)) SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0); SendClientMessage(playerid, COLOR_WHITE, "Vendeuse : Votre chapeau vous va à merveille !, Prix 20$");
Voilà, à toi de modifier par la suite ;)
-
Merci. Oui voilà je le voulais comme ca. Mais lors de la compile il me trouve toujours des erreurs ( les méme que sur l'autre )
if (strcmp("/chapeau", cmdtext, true, 10) == 0){
if(HaveGotAValidSkin(playerid))
SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0);
SendClientMessage(playerid, COLOR_WHITE, "Vendeuse : Votre chapeau vous va à merveille !, Prix 20$");
return 1;
}
-
Une condition, ce déclare, soit comme ça :
if(condition)
{ // "Ouvre" avec l'accolade
(Tabulation pour l'indentation) et les tâches à effectuer
} // "Ferme" la condition avec une accolade fermante
Attention : Ne pas oublier les accolades ! ({ et })
ou comme ça, si tu as quelque chose de cours à exécuter :
if(condition) execution1; execution2; // etc. sur une seule ligne et avec des points virgules ;
Si avec ça tu n'y arrive pas, relis bien les cours ;)
-
En gros comme ca.
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
if(HaveGotAValidSkin(playerid))
{SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0);
SendClientMessage(playerid, COLOR_WHITE, "Vendeuse : Votre chapeau vous va à merveille !, Prix 20$");
return 1;
}
Mais j'ai toujours les méme erreures
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(43) : error 012: invalid function call, not a valid address
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(43) : warning 215: expression has no effect
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(43) : error 001: expected token: ";", but found ")"
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(43) : error 029: invalid expression, assumed zero
E:\GTA SAN ADREAS\GTA San Andreas\gamemodes\bare.pwn(43) : fatal error 107: too many error messages on one line
-
desoler myk3l il est vrais que j'ai lu trop vite mais l'erreure a trouver est tellement simple Raptor j'avais meme peur qu'une personne la corrige sens faire expres mais non ils ont mis la meme erreure dans leur solution ;)
-
OK, ca veut dire que les erreurs de la compilation son due a cette erreur ?
-
@cristab : C'est fait exprès, ne t'inquiète pas, la condition sur une ligne et le || ... :)
@Raptor : Réfléchie 3 secondes, seulement 3 après avoir ctrl+c et ctrl+v puis F5 pour compiler, tu verras ça ira nickel ;)
-
Je sèche complétement, je trouve pas :/
-
Réfléchie, j'ai tout expliqué !
-
Je trouve pas désoler. >:(. J'ai essayer sur mon scripte, mais toujours autant d'erreurs. Help
-
Lis mon message sur les conditions comme il le faut pour commencer ;)
-
J'ai bien lus, je l'ai us 3-4 foit, les accolade sont bien fermer, j'ai penser a exécuter 2 exécution a la foit /chapeau1 + SetPlayerAttachedObject Mais ca marche pas, je sèche complètement.
-
indice rien a voir avec les accolades
-
Alors ca a avoir avec les condition ?
-
C'est pareil ;)
Je disais par rapport à ce que t'avais montrer avant, renvois ton code tel qu'il est maintenant ;)
-
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
{SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0);}
if(HaveGotAValidSkin(playerid));
{SendClientMessage(playerid, COLOR_WHITE, "Vendeuse : Votre chapeau vous va à merveille !, Prix 20$");SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0
return 1;
}
Mais toujours le même bug,.
-
revoit tes base car tu invente d'autre erreure la encore ...
-
Que disais-je ?!
Encore un problème de condition ;)
-
Enfaite je dois exécuter 2 condition a la foit ? la commande + HAveGotAValidSkin ?
-
Réflechie !
Pour deux conditions :
if(condition)
{ // "Ouvre" avec l'accolade
if(condition)
{ // "Ouvre" avec l'accolade
(Tabulation pour l'indentation) et les tâches à effectuer
} // "Ferme" la condition avec une accolade fermante
} // "Ferme" la condition avec une accolade fermante
else // sinon, si c'est pas dans la condition
{ // "Ouvre" avec l'accolade
//(Tabulation pour l'indentation) et les tâches à effectuer
} // "Ferme" la condition avec une accolade fermante
Attention : Ne pas oublier les accolades ! ({ et })
Là, je en peux pas être plus clair, et relis les cours de Gliux ;)
-
if (strcmp("/chapeau", cmdtext, true, 10) == 0)
{
new skintype;
if (HaveGotAValidSkin(playerid))
{
SetPlayerAttachedObject(playerid,1 , 18926, 2, 0.14, 0, -0.005, 0, 0, 0);
SendClientMessage(playerid, COLOR_WHITE, "Vendeuse : Votre chapeau vous va à merveille !, Prix 20$");
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau");
}
}
Voilà, mais toujours les même erreurs
-
Je re up le sujet ... le scripte et bon ou pas ?
-
ta comande est OK oar contre l'erreure ce trouve dans la fonction
-
Je sais pas pour moi car je suis aussi un débutant mais je sais faire plien de truck mais la condition "if" si met une fois (Je croit si sais faux m'écoute meme pas) apre tu met "If else" ou else tout cours car quant tu met ton code a chaque foit tu met 2 foit "if" je pense sais sa apre si non je suis vraiment naze et je vais refaire le cour de Gilux au moin 9 foit et la peut etre sa va m'apprendre.
-
sa commande et ok l'erreure est la dessous mais elle est tellement simple a visualiser que c'est facile (les fautes on etait commise pour ne pas eviter le simple copier coller comme nous ne donnons pas de code tout pret ;) )
HaveGotAValidSkin(playerid)
{
new skintype; // Création de la variable
skintype = GetPlayerSkin(playerid) // On donne comme valeur à la variable skintype le skin du joueur dans la variable
if(skintype == 0 || skintype == 9 || ...) // Si le skin est egal a 0 ou a 9 alors ....
{
return 1; // on retourne 1 (true = vrai), cela veux dire que le skin n'est pas compatible avec la casquette
}
else SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau"); return 0; // Si le skin n'est pas égal a 0 ou 9 alors on retourne 0 (false = faux), donc la casquette n'est pas compatible avec le skin
}
-
Et allais encor une foit je me trompe bon je suis reparti pour lire 9 foi les cour de Gilux donc je suis partit moi j'ai juste une question car j'ai plein d'objet mais je sais quoi le text mais comment je trouve la position sur la tête ou sur la figure? Donc jespère vous allais me repondre pendant que je lit 9 foit les cour de Gilux bonne chance a moi ^^.
++M'Boy'Z++
-
Ah oui, j'ai oublier de mettre que j'avais bien mis la condition HaveGotValidSkin toute en bas de mon scripte.
-
Ne trouvant pas l'erreur, je demande a quelle qu'un de m'aider. Je suis un scripteur débutant ... mais en me montrant l'erreur, je pourrais m'améliorer. J'ai lu les TUTO de Gilux, mais ne trouvant pas mon bonheur, je sèche... Aider moi svp.
-
La fonction HaveGotAValidSkin n'existe pas, tu doit la créer manuellement, et si tu prend celle de Cristab elle ne fonctionnera pas ^^
-
[post inutile] c'est pas de moi cette fonction moi c'etait en debut de topic ValideSkin je croit
ValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid)
if(skintype == 0 || skintype == 9)
{
return 1;
}
return 0;
}
et cela fonctionne en cherchant l'erreure :p
[/post inutile]voila l'erreure est flagrante et je ne voit rien de complexe la dedans au pire il suffit de relire les tuto by gilux
-
Un petit indice serait le bienvenue ... erreurs d'accolades ?
-
t'es encore sur cette erreure OMG et pour l'accolade j'ai deja dit NON
-
Oui, j'y suis encore lol, je n'arrive pas a a la trouvé.
-
Je n'y arrive pas même avec les cours de Gilux
-
Est-ce que l'erreur vient du retour de fonction ?
-
elle est dans la fonction meme est non pas un return
-
Alors dans les parametres de la fonction
(playerid,skintype) non ?
-
depuis le temps je pense que je vais vous donnez la solution sa me fait un peu de peine a voir ^^
HaveGotAValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid);
if(skintype == 0 || skintype == 9)
{
return 1;
}
else return SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau");
}
-
HaveGotAValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid);
if(skintype == 0 || skintype == 9)
{
return 1;
}
else return SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau");
}
Merci Bien pour ta réponse
Mais pouvait on faire ?
else {
SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau"
}
-
tu peu faire comme ceci
HaveGotAValidSkin(playerid)
{
new skintype;
skintype = GetPlayerSkin(playerid);
if(skintype == 0 || skintype == 9)
{
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Le skin n'est pas compatible avec ce chapeau");
return 0;
}
}
-
Ah ouais j'ai zappé le return 0
Merci Bien en tout cas :D