GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Bayshore le 22 Février 2008, 12:55:41
-
Bonjour :)
Je voudrais créer une commande pour faire une plaque d'immatriculation personalisé, avec SetVehicleNumberPlate (http://wikitmp.sa-mp.com/index.php/SetVehicleNumberPlatel), mais je ne sais pas comment se passe une récupération de texte dans une commande. :(
Donc je vous demande si vous pourriez m'expliquer le fonctionnement de ce code, tiré de ls-parachute. :)
public OnPlayerDeath(playerid, killerid, reason)
{
new name[MAX_PLAYER_NAME+1];
new string[256];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "*** %s died.", name, reason);
SendClientMessageToAll(COLOR_RED, string);
return 1;
}
Merci d'avance pour votre aide. :happy
-
Qu'es que ça a à voir avec le SetVehicleNumberPlate ton code :blink
Ca c'est pour afficher un message quand quel qu'un meurt, Exemple : VirUz_prOd est mort...
-
Je sais bien, mais je voudrait que l'on m'explique le code ci-dessous pour ensuite faire une fonction avec la plaque. :laugh
Je sais ce que ce code affiche, mais je n'en comprend pas le fonctionnement. :)
-
Bon c'est simple,
public OnPlayerDeath(playerid, killerid, reason){ /* Quand le joueur est mort */
new name[MAX_PLAYER_NAME+1]; /* La variable pour reconnaitre le nom du joueur (GetPlayerName)*/
new string[256]; /* La variable pour reconnaitre le format (string) */
GetPlayerName(playerid, name, sizeof(name)); /* On prend le nom du joueur Mort et on y assigne la variable qu'on a fais (name)*/
format(string, sizeof(string), "*** %s died.", name, reason); /* On crée un format, On y mets la variable du nom, Et pour le reconnaitre on y assigne la variable string */
SendClientMessageToAll(COLOR_RED, string); /* Enfin on fais un SendClientMessage avec la variable pour le format (string)*/
return 1;
}
-
Merci bien Urban. :)
-
J'ai un autre problème. :ninja
J'ai repris de je ne sais plus quel autre site ces bouts de code, en les modifiants légèrement
http://pastebin.gtaonline.fr/pastebin.php?show=370
http://pastebin.gtaonline.fr/pastebin.php?show=369
Et bien lorsque je tape par exemple /plate zecko ça me marque Server: unknown command. :( Je ne comprend pas trop pourquoi.
Pourriez-vous s'il-vous-plaît m'aider? :)
Le compilateur ne me renvoit aucune erreur ou warning...
Merci d'avance. :)
-
essaye une fois avec cmd à la place de cmdtext
if (strcmp("/plate", cmd, true) == 0)
++
R@f
-
Non R@f, ça ne marche pas. :)
error 017: undefined symbol "cmd"
-
Lu,
Met sa dans OnPlayerCommandText
new cmd[256];
et
cmd = strtok(cmdtext, idx);
A+ ;)
-
Toujours pas. :(
-
rajoute sa n'importe ou dans ton GM ( tout en bas par exemple )
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;
}
-
Déjà fait. :)
-
Sa peut pas te faire la même erreur ou alors tu a mal placer le new et le cmd ;)
-
Et bien je les ai placé commesur le code précedement donné: http://pastebin.gtaonline.fr/pastebin.php?show=370 :)
Et en essayant de les mettrent dans OnPlayerCommandText et pas directement dans le if (ce qui me semble inutile) ça ne marche pas non plus. :(
-
Faut que sa ressemble a sa :
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
cmd = strtok(cmdtext, idx);
/*Puis t'es commande ici*/
-
C:\DOCUME~1\DIEULO~1\MESDOC~1\SERVEU~1\7777\GAMEMO~1\test.pwn(248) : error 017: undefined symbol "idx"
C:\DOCUME~1\DIEULO~1\MESDOC~1\SERVEU~1\7777\GAMEMO~1\test.pwn(326) : warning 219: local variable "cmd" shadows a variable at a preceding level
En rajoutant idx:
C:\DOCUME~1\DIEULO~1\MESDOC~1\SERVEU~1\7777\GAMEMO~1\test.pwn(326) : warning 219: local variable "cmd" shadows a variable at a preceding level
C:\DOCUME~1\DIEULO~1\MESDOC~1\SERVEU~1\7777\GAMEMO~1\test.pwn(327) : warning 219: local variable "idx" shadows a variable at a preceding level
Et ça ne marche pas :(
-
Si c'est comme ça que tu as fait, je sais pas d'où pourrais venir ton problème :( :
new cmd[256];
new idx;
cmd = strtok (cmdtext, idx);
-
Oui j'ai fait comme ça. :(
-
Passe moi ton OnPlayerCommandeText par PM pour voir si je vois le problème.
-
Non, Mets le return de la commande à 0
-
Je crois que je sais, tu n'as pas mis ça :
new cmd[256];
new idx = 7;
cmd = strtok(cmdtext, idx);
au bon endrois, tu l'as mis dans ta commande au lieu de la mettre après la callback OnPlayerCommandeText, je t'envoie la correction par PM ;)
-
Non, Mets le return de la commande à 0
Ca ne fait rien. :(
-
Pourquoi voudrais tu faire sa et je suis pas sur que c'est possible a voir
-
Pourquoi voudrais tu faire sa et je suis pas sur que c'est possible a voir
Voir quoi ???
-
Pourquoi voudrais tu faire sa et je suis pas sur que c'est possible a voir
C'est fun non? ;)
Et si c'est possible. :)
-
je pourrais voir tout ton OnPlayerCommandText s'il te plait ? (dans pastebin)
++
R@f
-
http://zecko.pastebin.com/m4e6af275 ;)
-
voila le toute corrigé ;)
http://zecko.pastebin.com/m3a90333d
j'ai juste enlevé le menu des couleurs car j'avais pas le menu en entier, il te reste plus qu'à l'ajouter et c'est bon ;)
++
R@f
-
R@f, la seul chose que tu as fait, c'est d'enlever "= 7" dans
new idx = 7;
-
regarde un peu mieux :P tu verras que j'ai changé un peu plus de choses :happy
++
R@f
-
Thx R@F. :O :laugh
-
En fait je comparais ta modification par rapport à celle que je lui avait passer pas PM (que tu n'as pas pu voir, bien sûr :happy)