GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [DaD]Kizo le 28 Avril 2009, 00:02:42
-
Bonjour à tous :)
Voila donc je vous explique, je débute en script (on est tous passé par la :P) et j'essaie de faire mes commandes (tout seul si j'y arrive :) ) mais la je bloque :( .
Donc j'ai déja essayer en faisant ça:
//commande /vcolor
if(strcmp(cmdtext,"/vcolor", true) == 0)
{
SetVehiclePos(GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid));
{
ChangeVehicleColor(vehicleid, color1, color2);
}
return 1;
}
Mais je sais pas du tout quoi faire ;D
Les erreurs:
D:\GTA San Andreas\GTA San Andreas\gamemodes\DaDtest.pwn(540) : error 001: expected token: ",", but found ";"
D:\GTA San Andreas\GTA San Andreas\gamemodes\DaDtest.pwn(541) : error 036: empty statement
D:\GTA San Andreas\GTA San Andreas\gamemodes\DaDtest.pwn(543) : error 017: undefined symbol "vehicleid"
D:\GTA San Andreas\GTA San Andreas\gamemodes\DaDtest.pwn(545) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Un peu d'aide de votre serait super gentil :D
Je vous remercie d'avance. :P
-
Salut,
tu devrais commencer par une meilleure compréhension de l'utilisation des fonctions, si tu clique sur le nom de la fonction dans la liste à droite (dans pawno), les paramètres de cette fonction apparaissent au bas de pawno, ainsi tu peut deviner le nombre de paramètre que requiert une fonction et connaitre leur correspondance, quelques exemples:
Playerid - ID (numéro d'identification) du joueur auquel on applique une fonction (de façon générale)
vehicleid - ID du véhicule auquel on applique la fonction (de façon générale)
modelid - numéro de modèle d'un véhicule ou objet (en général)
...
Ainsi, pour la fonction ChangeVehicleColor(vehicleid, color1, color2); tu peut deviner la correspodance de chaque paramètre:
vehicleid - le véhicule auquel nous changeons la couleur
color1 - première couleur (principale)
color2 - Deuxième couleur (secondaire, parfois non-affichée (dépend du modèle du véhicule))
par contre tu doit mettre une valeur dans ces paramètre (ici ce sont tous des entiers), comme tes vehicleid, color1, color2 ne sont pas déclarés, ils n'existent pas et correspondent à absolument rien
ce qui veut dire que tu doit :
- tester si le joueur est dans un véhicule (IsPlayerInAnyVehicle)
- récupérer le ID de ce véhicule (GetPlayerVehicleID)
- récupérer les numéro de couleurs entrés par le joueur (que je n'expliquerai pas, un peu trop long, de plus que le sujet a été à peu près abordé il y a peu : ICI (http://))
donc on arrive rapidement à ce code:
if(IsPlayerInAnyVehicle(playerid))//test si le joueur est en véhicule, il est important de noter l'absence de ; à la fin d'un if, qui est plutôt suivit d'une accolade d'ouverture {
{
new vehicleid = GetPlayerVehicleID(playerid);//création de la variable 'vehicleid' + récupération du ID du véhicule qui est stocké dans la variable
ChangeVehicleColor(vehicleid, color1, color2);//on change la couleur du véhicule, malheureusement les couleurs n'ont pas été récupérés
}
Pour récupérer les variables:
en général, on a tendance à utiliser un strtok (fonction qui permet de récupérer une partie d'un basé sur un caractère, généralement un espace) au début de la callback OnPlayerCommandText puis , dans ce cas, deux strtok dans la commande, ce qui donne a peu près ceci:
if(IsPlayerInAnyVehicle(playerid))//test si le joueur est en véhicule, il est important de noter l'abscence de ; à la fin d'un if, qui est plutôt suivit d'une accolade d'ouverture {
{
new vehicleid = GetPlayerVehicleID(playerid);//création de la variable 'vehicleid' + récupération du ID du véhicule qui est stocké dans la variable
new color1 = strval(strtok(cmdtext, idx));//idx est une variable déclaré au début de la callback, strval permet de récupérer la valeur du texte séparé via strtok, puis on stock le tout dans la nouvelle variable
new color2 = strval(strtok(cmdtext, idx));//il est à remarquer que l'on utilise strtok de la même façon même si l'on désire récupérer une partie différente du string, ceci causé par le changement de valeur de idx (voir topic indiqué)
ChangeVehicleColor(vehicleid, color1, color2);//on change la couleur du véhicule, couleurs maintenant récupérées
}
ainsi tu as maintenant un bout de code qui devrait normalement fonctionner, par contre assure toi de bien comprendre sa façon de fonctionner et DE NE PAS TOUT COPIER BÊTEMENT, si tu trouve révoltant l'idée de lire ce texte, pense à ceux qui les écrivent...
++Sim++
-
ce qui veut dire que tu doit :
- tester si le joueur est dans un véhicule (IsPlayerInAnyVehicle)
- récupérer le ID de ce véhicule (GetPlayerVehicleID)
- récupérer les numéro de couleurs entrés par le joueur (que je n'expliquerai pas, un peu trop long, de plus que le sujet a été à peu près abordé il y a peu : ICI (http://))
Lien mort ....
++
[L2K]lugia
-
Je pense que Sim voulait te donner ce lien : http://www.gtaonline.fr/forums/index.php/topic,2568.0.html (http://www.gtaonline.fr/forums/index.php/topic,2568.0.html)
PS : Trouvé en 10 seconde avec la fonction rechercher.
++
MrT®
-
Merci a toi Sim,
J'ai essayer de faire comme tu as fait, j'ai essayé de définir idx (il me le demandait) en faisant cela:
new idx = 0;
Mais quand j'essaye la commande sur le jeux, la voiture devient noir en faisant simplement /vcolor et en essayant une couleur après, la commande ne marche pas. Est-ce que je doit déterminer les couleurs?
-
Salut,
désolé, j'ai écrit le [url.... sans aller chercher l'adresse voulant aller la chercher après avoir tout écrit mais j'ai malheureusement oublié ... ::)
sinon MrT, je pensais plutôt à Celui-ci (http://www.gtaonline.fr/forums/index.php/topic,7104.0.html)
++Sim++