GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: John_Montavedro le 28 Novembre 2010, 15:30:09
-
Bonjour, je reprends un peu le pawno ;) Mais j'ai encore! perdu la phrase qui permet d'envoyer un message à tout le monde...
Voici ce que j'ai fais (sa ne marche pas IG) :
if (strcmp(cmdtext, "/clearchat", true) == 0)
{
SendClientMessageToAll(blanc, "[%s] : La chatbox a été remise à zero");
return 1;
}
Pourriez vous m'aider, merci!
-
A quoi correspond le %s, car je ne vois vraiment pas à quoi il correspond.
De plus, si tu veux afficher une variable, tu dois formater une phrase !
Sinon, SendClientMessageToAll est la bonne commande pour envoyer une message à tous le monde.
-
A quoi correspond le %s, car je ne vois vraiment pas à quoi il correspond.
De plus, si tu veux afficher une variable, tu dois formater une phrase !
Sinon, SendClientMessageToAll est la bonne commande pour envoyer une message à tous le monde.
%s -> nom de la personne qui clear
-
Salut,
if(strcmp.............)
{
new nom[MAX_PLAYER_NAME]; // La variable qui stockera le nom
new string[100]; // On crée la variable de phrase
format(string,sizeof(string),"[%s] a effacé le chat",nom);
SendClientMessage(color,string);
return 1;
}
Si tu as des questions n'hésite pas :)
-
Saluut =DD
Pour un début pas mal. Mais il y a encore des choses à voir. Tout d'abbord il faut que t'apprene les variables.
/!\ Attention : A chaque fois qu'il a un %s ou %d il faudras mettre à la fin de la phrase ce qu'ils représentent.
Exemple:
format(string, sizeof(string), "* %s est malade", sendername);
SendClientMessage(giveplayerid, COLOR_WHITE, string);
Explication:
%s = Représente des lettres et non pas des chiffres.
%d = Représente des chiffres et non pas des lettres.
Dans ton cas, le script n'a rien a représenté. Donc il affichera aux joueurs " %s: La chatbox a été remise à zéro."
Il ne faut jamais oublié ce que %s ou %d doivent représentés.
Correction:
if (strcmp(cmdtext, "/clearchat", true) == 0)
{
new string[50];
new sendername[MAX_PLAYERS_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
ClearChatbox(i, 100);
format(string, sizeof(string), "* %s: La chatbox a été remise à zéro", sendername);
SendClientMessageToAll(COLOR_WHITE, string);
return 1;
}
PS: Attention au dessus Gilux c'est trompé, il a oublié SenClientMessageToAll
J'espère t'avoir aidé.
-
ClearChatbox(i, 100);
et tu le trouve ou sa
Sa signifie tout les joueurs. "i++"
-
Lol.. Et bah corrige moi
-
Il faut également précisé que %d inclut que des nombres entier et non des nombres décimales.
-
Bien sur qu'il prend les nombres décimaux ^^
Tu veut plutôt que %d ainsi que %i prend les entiers décimaux ^^
Un petit explicatif sur les nombres décimaux (http://fr.wikipedia.org/wiki/Nombre_d%C3%A9cimal)
-
%d Inserts an integer (whole) number
%d Insertion d'un nombre entier
CF: http://wiki.sa-mp.com/wiki/Format (http://wiki.sa-mp.com/wiki/Format)
-
Oui, mais ce que je veut dire par la, c'est que le %i et le %d ne sont la que pour les entiers décimal réel, et pas autres chose je sais pas si tu comprend ce que je veut dire lol
-
Non je ne comprend pas :-\.
-
1 ou 1.0 sont des nombres décimaux.
Mais le soucis du pawno c'est qu'il ne cherche pas à savoir si c'est un nombre décimal ou pas. Juste à savoir si il est entier ou float.
Donc si le nombre (décimal) est entier %d
si c'est par exemple 1.0 %f
A+, Sam.
-
Je comprend mieux, dans mon esprit, 1 est un nombre entier mais 1.0 est un nombre décimal même si il est réellement un nombre entier.
-
Oui voila, ça porte à confusion. ^^
C'est dommage quand même que les nombres doivent se séparer et l'on doit utiliser des systèmes distinct pour les utiliser :( Mais obliger de faire avec ^^
-
Salut,
en fait la traduction qu'il faudrait faire c'est plutôt entier vs fractionnaire.
Un nombre entier est décimal, tout comme une certaine quantité de nombre fractionnaires.
Pour être décimal, il faut que le nombre puisse s'exprimer avec un nombre fini de chiffres. Donc, les nombres périodiques, irrationnels etc.. qui s'expriment avec une infinité de chiffre (des exemples plutôt connus: PI, 1/3, 2/3..) ne sont pas décimaux.
Aussi, merci de revenir au sujet: une commande /clearchat.
À ce propos, John change le nom de ton topic pour un titre clair sinon ce sera le :lock. Fais vite.
++Sim++
-
tu peut faire comme Jimmy ta dit :
if (strcmp(cmdtext, "/clearchat", true) == 0)
{
new string[50];
new sendername[MAX_PLAYERS_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
ClearChatbox(i, 100);
format(string, sizeof(string), "* %s: La chatbox a été remise à zéro", sendername);
SendClientMessageToAll(COLOR_WHITE, string);
return 1;
}
[code]
Mais avec un public qui montre la variable du ClearChatBox
la voici :
[code]
public ClearChatBox(playerid, lines)
{
if (IsPlayerConnected(playerid))
{
for(new i=0; i<lines; i++)
{
new message[128];
format(message,sizeof(message), " "); // le message clear la chatbox
SendClientMessageToAll(COLOR_BLUE, message);
}
}
return 1;
}
Biensûr avec le forward.
forward ClearChatBox(playerid, lines);[/code][/code]
-
En faite, son seul problème est de ne pas avoir formaté le texte avant de l'envoyé !
-
Salut,
Komolos, pourquoi format tu ton message dans ta fonction ClearChat ? Il ne contient que des caractères constants... et pourquoi la faire en public? et ;pourquoi le paramètre playerid si tu efface la chatbox de tous les joueurs? j'aimerais comprendre...
ClearChatBox(lines)
{
for(new i=0; i<lines; i++)
{
SendClientMessageToAll(0xFFFFFFFF, " ");//i j'aime le blanc >:)
}
return 1;
}
ce code est bien mieux, plus court, plus efficace, plus clair, ne crée pas une variable à chaque itération...
++Sim++
-
Moi j'ai fait comme ça personnellement ça marche pour tout les joueurs.
Mais toi tu as fait plus simple, j'aime ta facon de faire ^^
-
Salut,
Moi j'ai fait comme ça personnellement ça marche pour tout les joueurs.
Mais toi tu as fait plus simple, j'aime ta facon de faire ^^
voilà, ce n'est parce que ça fonctionne que l'on ne peut pas faire mieux.
Il y a toujours moyen d'améliorer.
Bien sur, à un certains point l'amélioration devient négligeable...
++Sim++
-
Tu peut même envoyer une ligne vide ça permet que les packets s'envoie plus rapidement, mais bon c'est négligeable ^^