GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 13 Juin 2010, 19:38:12
-
Bonjour a toutes et a tous,
Je voudrais savoir si cela est possible de forcer le serveur a envoier une phrase en majuscule.
Exemple: le serveur prend des phrase en minuscule d'un fichier et il les envoi ig en majuscule.
Merci
-
Je n'ai pas compris désolé
-
ça ne fonctionne pas, tout mes textes sont Une fleche vers le haut et un T.
Quelqu'un a une autre méthode?
-
Je te code ca tout de suite
EDIT:
Et Hop
public TextMinInMaj(Text[]);
public TextMinInMaj(Text[])
{
for(new i = 0; i < strlen(Text); i++)
{
if(Text[i] >= 'a' && Text[i] <= 'z')
{
Text[i] -= 'a' - 'A';
}
}
}
-
Sasuke tu as encore ton habitude du codage en C ^^
forward TextMinInMaj(Text[]);
public TextMinInMaj(Text[])
{
for(new i = 0; i < strlen(Text); i++)
{
if(Text[i] >= 'a' && Text[i] <= 'z')
{
Text[i] -= 'a' - 'A';
}
}
return Text;
}
Je pense comme sa tu avais oublier de retourner une valeur :)
-
euh non pas du tout c'était voulu ^^
ça s'utilise comme ça
new str[] = "Salut je suis en majuscule";
TextMinInMaj(str);
Et voila, maintenant le array str à toute ces lettres en majuscules ^^
-
Voici la version complète, qui prends en charge les caractères accentués que tout le monde avait oublié :
TextMinInMaj (Text[])
{
for(new i = 0; i < strlen(Text); i++)
{
if(Text[i] >= 'a' && Text[i] <= 'z')
{
Text[i] -= 'a' - 'A';
}
else
{
switch (Text[i])
{
case 'à', 'â' :
{
Text[i] = 'A';
}
case 'é', 'è', 'ê':
{
Text[i] = 'E';
}
case 'î' :
{
Text[i] = 'I';
}
case 'ô' :
{
Text[i] = 'O';
}
case 'ù', 'û' :
{
Text[i] = 'U';
}
case 'ç' :
{
Text[i] = 'C';
}
}
}
}
}
NB : Je rappelle qu'en français, le caractères en majuscule ne prennent normalement pas d'accent.
++
Syg
-
Salut, Syg je pensais comme toi, mais je vois de plus en plus de majuscule avec accent à cause de l'arriver de l'imprimerie, des ordinateurs etc.. donc plus de majuscule typique française
Mais bon :s ^^
-
Merci mais il me disent que je dois remettre un return.
De plus j'aimerais qu'on m'explique cette fonction.
Merci
-
Ben oui c'est pour sa que j'ai poster il faut que mettent comme gzsume un return Text;
Ensuite pour l'explication le script va
-Créé une boucle insérant le texte
-ensuite il va vérifier si le texte contient des lettres de a à z non caractère spéciaux
-si le texte contient des carecteres spéciaux d'ou le else le script va switcher entre le cases pour trouver le caractère et le transformer en majuscule
Voila tout :)
-
Ok Merci.
Pour le return, j'avais essayer avant de poster, il me dit
error 090: public functions may not return arrays (symbol "TextMinInMaj")
-
ça me met des caractère spéciaux avant mon texte :s
-
Tu peut nous donner un exemple stp ? Ou essaye de l'afficher avec un format()
-
ben tu l'utilise mal alors
-
Mais non Gz', Syg n'a rien oublié son code est bon ^^
Il modifie directement la chaine qu'on lui donne ^^
Genre
new chaine[128] = "salut Toi éè";
TextMinInMaj (chaine);
SendClientMessageToAll(0xFFFFFFFF,chaine);
-
ben tu l'utilise mal alors
Et oui, je fesait format......." %s", TextMinInMaj(string).
Merci Sasuke
-
Ok :) Je pensais que tu utiliser SendClientMessage ^^
-
new str[128] = "";
new chaine[128] = "salut Toi éè";
TextMinInMaj (chaine);
format(str,sizeof(str),"Message en majuscule: %s",chaine);
SendClientMessageToAll(0xFFFFFFFF,str);
Comme ça =)
-
Tout d'abord, quel est l'intérêt de mettre cette fonction en "public" ?
Le mieux reste de ne rien mettre, comme je l'ai fait et de la mettre dans un include.
Et si la fonction n'est pas utilisée et que l'on veut éviter un warning, il suffit de la déclarée en "stock".
Ensuite, le fait de retourner la chaîne n'est qu'une question de commodité et si la fonction n'est pas déclaré en public, il n'y a pas de problème à l'utiliser directement :
NB : J'ai mis des commentaires dans le script pour scott
#include <a_samp>
// Stock permet d'éviter les warning si la fonction n'est pas utilisée
stock TextMinInMaj (Text[])
{
// On parcourt la totalité de la chaîne
for(new i = 0; i < strlen(Text); i++)
{
// Si le caractère courant de la chaîne est un lettre minuscule (a-z)
if(Text[i] >= 'a' && Text[i] <= 'z')
{
// On la transforme en majuscule
Text[i] -= 'a' - 'A';
}
// Sinon, c'est un autre caractère
else
{
// Selon le caractère courant on le transforme en majuscule
switch (Text[i])
{
case 'à', 'â' :
{
Text[i] = 'A';
}
case 'é', 'è', 'ê':
{
Text[i] = 'E';
}
case 'î' :
{
Text[i] = 'I';
}
case 'ô' :
{
Text[i] = 'O';
}
case 'ù', 'û' :
{
Text[i] = 'U';
}
case 'ç' :
{
Text[i] = 'C';
}
}
// Tous les autres caractères (majuscule, nombre, ponctuation) restent inchangés
}
}
// On retourne la chaîne pour pouvoir utiliser la fonction directement dans printf, format, ...
return Text;
}
main ()
{
new Chaine[]="Hello éùùôîè";
printf ("%s", TextMinInMaj (Chaine));
}
public OnGameModeInit ()
{
return 1;
}
Pour chneubeul :
Effectivement, on rencontre de plus en plus d'accent sur les majuscules en français mais je disais normalement les majuscules n'ont pas d'accent.
D'ailleurs, essayes de faire un "é" majuscule avec l'accent sur ton clavier .... pas facile hein, et pour cause, le "é" majuscule s'écrit E.
Mais si on veut vraiment des accents sur les majuscules, ma fonction est facilement modifiable mais elle deviendra beaucoup plus longue :
// Selon le caractère courant on le transforme en majuscule
switch (Text[i])
{
case 'â' :
{
Text[i] = 'Â';
}
case 'à' :
{
Text[i] = 'À';
}
...
NB : Pour ceux qui voudrait modifier la fonction, il est possible d'utiliser charmap qui est fourni dans Windows pour avoir tous les caractères accentués. Il suffit de sélectionner un caractère, de cliquer sur le bouton "Copier" puis d'aller le coller dans le script.
++
Syg
-
Bonjour a tous, merci pour votre méthode, mais depuis que je l'utilise, dans mon ongamemodeinit
new nomveh[3];
format(nomveh, sizeof(nomveh), "%s",CarInfo[h][cOwner]);
new nomveh2[3];
format(nomveh2, sizeof(nomveh2), "%s",CarInfo[h][cDescription]);
TextMinInMaj(nomveh);
TextMinInMaj(nomveh2);
format(stringp, sizeof(stringp), "%s%d%s",nomveh,h,nomveh2);
A chaque fois que j'affiche ou le modele, ou le proprietaire, le texte est en majjuscule. Alors qu'il ne devrais l'etre que ou il y a mon code, dans le ongamemodeinit.
Merci d'avance