17.04.2015, 15:01
(
Последний раз редактировалось Ivory; 17.04.2015 в 16:18.
)
Code:
#define MAX_CHAR_BY_LINE 50
new PlayerText:textdraw[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
// CHARGEMENT DU TEXTDRAW
textdraw[playerid] = CreatePlayerTextDraw(playerid,484.000000, 167.000000, "text");
PlayerTextDrawBackgroundColor(playerid,textdraw[playerid], -1);
PlayerTextDrawFont(playerid,textdraw[playerid], 1);
PlayerTextDrawLetterSize(playerid,textdraw[playerid], 0.180000, 1.000000);
PlayerTextDrawColor(playerid,textdraw[playerid], 255);
PlayerTextDrawSetOutline(playerid,textdraw[playerid], 0);
PlayerTextDrawSetProportional(playerid,textdraw[playerid], 1);
PlayerTextDrawSetShadow(playerid,textdraw[playerid], 0);
PlayerTextDrawSetSelectable(playerid,textdraw[playerid], 0);
return 1;
}
stock ShowTextDrawForPlayer(playerid, text[])
{
new str[256], line=0;
[COLOR="DarkGreen"]// format(str, sizeof str, text);[/COLOR]
strunpack(str, text); [COLOR="Green"]// EDIT - format remplacer par strunpack (plus rapide car ne gиre pas les arguments)[/COLOR]
for(new i = 0; i < strlen(str); i++){
line++;
if(line >= MAX_CHAR_BY_LINE && str[i] == ' ') strins(str, "~n~", i), line = 0;
}
convert_encoding(str);
PlayerTextDrawSetString(playerid, textdraw[playerid], str);
PlayerTextDrawShow(playerid, textdraw[playerid]);
return 1;
}
stock convert_encoding(string[]) // CONVERSION DES CARACTERES SPECIAUX
{
new original[50] = {192,193,194,196,198,199,200,201,202,203,204,205,206,207,210,211,212,214,217,218,219,220,223,224,225,226,228,230,231,232,233,234,235,236,237,238,239,242,243,244,246,249,250,251,252,209,241,191,161,176};
new fixed[50] = {128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,94,124};
new len = strlen(string);
for (new i; i < len; i++) {
for(new j;j < 50;j++) {
if(string[i] == original[j]) {
string[i] = fixed[j];
break;
}
}
}
}
Voila, alors pas eu besoin de '%', strins fait parfaitement l'affaire :).
- Je dйfinie une directive 'define' pour indiquer au bout de combien de caractиre ce fera mon retour а la ligne.
- Je charge les caractйristique du textdraw dans "OnPlayerConnect" puisque j'ai utilisй les textdraw propre au joueur.
- Je crйй une fonction avec un paramиtre 'text' pour indiquer le texte а afficher :
Dans cette fonction je stock sur 'str' mon paramиtre 'text' et je dйfinie une variable nommй 'line' qui m'indiquera quand le retour а la ligne doit ce faire sur cette ligne. je lance une boucle 'for' qui ce rйpйtera sur chaque caractиre de 'str', j'incrйmente 'line' а chaque lancement de la boucle et si line >= MAX_CHAR_BY_LINE et que je suis sur un caractиre qui est un espace alors j'insиre '~n~' avec strins et rйinitialise line а 0 pour la prochaine ligne.
Ensuite j'utilise la fonction 'convert_encoding' sur 'str' afin fixй les caractиres spйciaux (si il y en a) pour le textdraw, j'affecte la variable 'str' sur le textdraw et je l'affiche au joueur.
Voila j'espиre que c'est comprйhensible ^^.