GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: rivoal29 le 30 Janvier 2008, 13:57:03
-
Bonjour, :D
Je chercher une commande où par exemple quand on écrit /cc 0 0 :-[ que le véhicule qu'on ya devienne noir ( 0 0 ) si c'est (0 1) noir et blanc si c'est possible pas le cas dans tout les véhicule :bangin
Merci :)
-
Cherche plutôt à faire la commande toi-même.
Utilise la fonction ChangeVehicleColor pour changer la couleur de ton véhicule.
Pour un exemple de récupération des paramètres d'une commande, regardes dans LVDM.PWN comment est faite la commande /givecash.
++
Syg
-
Cherche plutôt à faire la commande toi-même.
Utilise la fonction ChangeVehicleColor pour changer la couleur de ton véhicule.
Pour un exemple de récupération des paramètres d'une commande, regardes dans LVDM.PWN comment est faite la commande /givecash.
++
Syg
ok je vais voir
EDIT: Non ;D :( je comprend rien du tout
-
Salut moi je te donne un exemple
Dans onplayercmdtext:
if(strcmp(cmdtext, "/noir", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, 0xFF4040FF, "Vous avez besoin d'un vehicule pour cette commande.");
ChangeVehicleColor(GetPlayerVehicleID(playerid), 0,0);
return SendClientMessage(playerid, 0x40FF40FF, "La couleur a bien été changée");
}
Petite info a la fonction ChangeVehicleColor(GetPlayerVehicleID(playerid), 0,0);
Le 0,0 sont les couleur
exemple la c'est pour avoir ton vehicule tout noir
+
-
Voila j'ai essaye de faire une commande mais ya des erreur :wall :boulz :boulet
La commande :
else if (!strcmp(cmdtext, "/cc", true))
{
new carc,tmppp[256]; //ligne 1190
new carcc,tmpp[256]; //ligne 1191
tmpp = strtok(cmdtext,carc);
tmppp = strtok(cmdtext,carcc);
if (!strlen(tmpp))
{
SendClientMessage(playerid, VERT, "USAGE: /cc [couleur 1] [couleur 2]");
return 1;
}
ChangeVehicleColor(carc,carcc);
return 1;
}
Les erreur :
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(1190) : error 017: undefined symbol "strtok"
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(1190) : error 033: array must be indexed (variable "tmpp")
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(1191) : error 017: undefined symbol "strtok"
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(1191) : error 033: array must be indexed (variable "tmppp")
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(1197) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
-
Salut moi je te donne un exemple
Dans onplayercmdtext:
if(strcmp(cmdtext, "/noir", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, 0xFF4040FF, "Vous avez besoin d'un vehicule pour cette commande.");
ChangeVehicleColor(GetPlayerVehicleID(playerid), 0,0);
return SendClientMessage(playerid, 0x40FF40FF, "La couleur a bien été changée");
}
Petite info a la fonction ChangeVehicleColor(GetPlayerVehicleID(playerid), 0,0);
Le 0,0 sont les couleur
exemple la c'est pour avoir ton vehicule tout noir
+
Oui :) Mais moi je voudrait choisir dans la commande quel couleur
-
arf desolé j'avais pas compri :wall
Je vais aussi tester
-
Voilà, tu as au moins fait l'effort de te lancer.
Donc, premièrement, récupère la fonction strotk qui se trouve dans LVDM.PWN et copie la dans ton script.
Ensuite, voici ta commande corrigée pour la récupération des paramètres de la commande et l'appel à ChangeVehicleColor.
Comme c'est une commande avec paramètres, il faut faire une opération supplémentaire dans OnPlayerCommandText :
public OnPlayerCommandText (playerid, cmdtext[])
{
new idx = 0;
new cmd[256];
/* On extraie la commande */
cmd = strtok (cmdtext, idx); // -> C'est l'opération supplémentaire qui consiste à
// récupérer juste le nom de la commande (sans les paramètres)
/* TES COMMANDES VONT ICI SANS MODIFICATION */
/* Commande de changement de couleur du véhicule */
else if (!strcmp(cmdtext, "/cc", true))
{
new carc, tmppp[256];
new carcc, tmpp[256];
/* On recupère le premier paramètre (couleur 1) */
tmpp = strtok(cmdtext, idx);
carc = strval (tmpp);
/* On recupère le deuxième paramètre (couleur 2) */
tmppp = strtok(cmdtext, idx);
carcc = strval (tmppp);
/* Si il manque un des deux paramètre (ou les deux) */
if (!strlen(tmpp) || !strlen(tmppp))
{
SendClientMessage(playerid, VERT, "USAGE: /cc [couleur 1] [couleur 2]");
return 1;
}
ChangeVehicleColor (GetPlayerVehicleID (playerid), carc, carcc);
return 1;
}
/* TU PEUX METTRE D'AUTRES COMMANDES ICI SI TU VEUX */
}
++
Syg
-
Voilà, tu as au moins fait l'effort de te lancer.
Donc, premièrement, récupère la fonction strotk qui se trouve dans LVDM.PWN et copie la dans ton script.
Ensuite, voici ta commande corrigée pour la récupération des paramètres de la commande et l'appel à ChangeVehicleColor.
Comme c'est une commande avec paramètres, il faut faire une opération supplémentaire dans OnPlayerCommandText :
public OnPlayerCommandText (playerid, cmdtext[])
{
new idx = 0;
new cmd[256];
/* On extraie la commande */
ligne 825 cmd = strtok (cmdtext, idx); // -> C'est l'opération supplémentaire qui consiste à
// récupérer juste le nom de la commande (sans les paramètres)
/* TES COMMANDES VONT ICI SANS MODIFICATION */
/* Commande de changement de couleur du véhicule */
else if (!strcmp(cmdtext, "/cc", true))
{
new carc, tmppp[256];
new carcc, tmpp[256];
/* On recupère le premier paramètre (couleur 1) */
tmpp = strtok(cmdtext, idx);
carc = strval (tmpp);
/* On recupère le deuxième paramètre (couleur 2) */
tmppp = strtok(cmdtext, idx);
carcc = strval (tmppp);
/* Si il manque un des deux paramètre (ou les deux) */
if (!strlen(tmpp) || !strlen(tmppp))
{
SendClientMessage(playerid, VERT, "USAGE: /cc [couleur 1] [couleur 2]");
return 1;
}
ChangeVehicleColor (GetPlayerVehicleID (playerid), carc, carcc);
return 1;
}
/* TU PEUX METTRE D'AUTRES COMMANDES ICI SI TU VEUX */
}
++
Syg
WOW :ohmy
j'ai recopier dans mon script a la bonne position et il y a des erreur :( :( :( :( :( :( :( :( :(
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(825) : error 017: undefined symbol "strtok"
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(825) : error 033: array must be indexed (variable "cmd")
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(842) : warning 217: loose indentation
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(848) : error 017: undefined symbol "strtok"
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(848) : error 033: array must be indexed (variable "tmpp")
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(852) : error 017: undefined symbol "strtok"
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(852) : error 033: array must be indexed (variable "tmppp")
C:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\test.pwn(822) : warning 204: symbol is assigned a value that is never used: "idx"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
EDIT : je les met :
-
Donc, premièrement, récupère la fonction strotk qui se trouve dans LVDM.PWN et copie la dans ton script.
Tu as juste oublié de ça.
++
Syg
-
Tu as juste oublié de ça.
++
Syg
quel fonction ???
Je vais voir
EDIT : cette function la ?
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;
}
edit2: YES ! c'est bon ! merci a syg ! :lock :D
-
ouai, c'est cette fonction là ;)
ah aussi, j'ai testé la commande à Syg, si je fais "/cc" sa marque le truc de l'usage trandis que si je marque "/cc 184 184" sa marque invalid command. J'ai oublié quelque chose ? (je n'ai pas trop le temps de regarder le code, j'ai mon entrainement d'avrion ...)
++
R@f
-
ouai, c'est cette fonction là ;)
ah aussi, j'ai testé la commande à Syg, si je fais "/cc" sa marque le truc de l'usage trandis que si je marque "/cc 184 184" sa marque invalid command. J'ai oublié quelque chose ? (je n'ai pas trop le temps de regarder le code, j'ai mon entrainement d'avrion ...)
++
R@f
oui moi aussi sa le fait je vien de l'éssayer
-
Hé ho les mecs, je fais exprès de laisser une erreur dans le script pour que vous vous creusiez les méninges ..... non, je rigole.
L'erreur vient de là :
else if (!strcmp(cmdtext, "/cc", true))
Il fallait mettre :
else if (!strcmp(cmd, "/cc", true))
Sinon, elle marche très bien cette commande.
++
Syg