• 05 Mai 2025, 03:29:54


Auteur Sujet: Problème textes trop court.  (Lu 1156 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Kevin_Carter

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Problème textes trop court.
« le: 01 Mai 2013, 05:37:23 »
Bonjour à tous, alors voilà, mon problème est que les textes de mes /me, /do, /o, /n, /rapport etc sont trop courts...

J'ai augmenté la capacité de mes variables mais sans résultat... Je sais qu'un topic du genre à déjà été créer mais ça ne fonctionne pas avec moi.

Voilà le script du /me :

CMD:me(playerid, params[])
{
new pName[26], Float:x, Float:y, Float:z,string[250], message[126];
GetPlayerName(playerid, pName, 26);
GetPlayerPos(playerid, x,y,z);

if(!sscanf(params,"s", message))
{
    for(new i = 0;i<MAX_PLAYERS; i++)
    {
format(string, sizeof(string),"%s %s", pName, message);
        if(IsPlayerInRangeOfPoint(i, 10, x,y,z))
        {
            SendClientMessage(i, violet, string);
        }
   
    }

}
else return SendClientMessage(playerid, gris ,"USAGE: /me <message>");
return 1;
}

Je vous remercie d'avance. ++Kevin

Hors ligne rafffel

  • *
  • Bandit
  • Messages: 493
    • Voir le profil
Re : Problème textes trop court.
« Réponse #1 le: 01 Mai 2013, 11:02:35 »
Si je ne dit pas de bétise.
Il faut pour bien faire il faut éclater ton texte par tranche de 144 caractère(limite de la commande SendClientMessage) puis l'afficher en plusieurs fois avec une boucle.

vincentdu90

  • Invité
Re : Problème textes trop court.
« Réponse #2 le: 01 Mai 2013, 11:07:19 »
Bonjour,

Il faut remplacer la ligne :

Code: (Pawn) [Sélectionner]
if(!sscanf(params,"s", message))

Par :

Code: (Pawn) [Sélectionner]
if(!sscanf(params,"s[126]", message))

Tu fais ensuite la même chose avec les autres commandes qui ont ce même problème, en remplaçant 126 par la taille des tableaux qui recevront la chaîne de caractère.
J'avais le même problème et je l'ai résolu en parcourant les explications de Y_Less sur sscanf. C'est une petite spécificité de ce dernier.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Problème textes trop court.
« Réponse #3 le: 01 Mai 2013, 11:25:57 »
Par contre, pour un /me, tu t'embrouilles un peu là. ^^

Code: (pawn) [Sélectionner]
CMD:me(playerid, text[])
{
    if(isnull(text)) SendClientMessage(playerid, 0xFFFFFFFF, "Usage /me <action>");
    new pname[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(str, 128, "* %s %s", pname, text);
    SendClientMessageToAll(0xFFFFFFFF, str);
    return 1;
}

Je trouve ça plus simple. A toi de le modifier ou de le laisser tel qu'elle. (J'ai pas fait ton IsRangOfPoint, manque de temps, mais le principe est là ;) )


Adju ♥
(-_-)



Hors ligne Kevin_Carter

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : Problème textes trop court.
« Réponse #4 le: 01 Mai 2013, 13:04:48 »
Merci à vous deux ! :)

Résolu.

vincentdu90

  • Invité
Re : Problème textes trop court.
« Réponse #5 le: 01 Mai 2013, 13:27:16 »
@Infu.

C'est pour RP je pense donc la boucle est nécessaire, donc ton code est presque équivalent.
Cependant, il est vrai que le format de Kevin pourrait être mis en dehors de la boucle.

PS : <3 ta signature  :laugh: