• 05 Juin 2026, 21:43:20


Auteur Sujet: [Demande Aide] Couper un message  (Lu 2504 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
[Demande Aide] Couper un message
« le: 19 Octobre 2010, 22:04:01 »
Bonsoir, je suis de retour pour Syg, Sim etc.. ( petite question : Ou est passée Cristab ? Il avais arrêter GTA et là le pawn ? :o)


Tout est dans le titre. Donc j'aimerais que quand le joueur dépasse son taux de caractère quand il écris une phrase c'est à dire 128 bits, on l'a coupe au dernier mot et on stock le reste pour l'envoyer ensuite.
Sur un exemple cela donnerais :

- Imaginons, cette phrase '' J'aimerais être découper aprés 128 bits " face 128 bits, ce qui n'est pas le cas
je voudrais que cette phrase se coupe par exemple aprés le 128 ce qui donnerais,

Sam_Giancana : J'aimerais être découper après 128 <-- 128 bits on coupe et on renvoie à la ligne
bits <-- donc ici !

Merci de votre aide
 :cheers

Hors ligne Aegoss

  • I'm gonna kick dat' ass !
  • *
  • • « a3goss - иsɢ Lєadєʀ » •
  • Messages: 4787
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #1 le: 19 Octobre 2010, 22:22:59 »
J'ai essayé Google Translator... error écrit en gros.

Si tu fais une version française de ton post, je pense qu'on va pouvoir t'aider .
HP Envy 15-K222NF - Argent
15,6'' Full HD - Intel Core i5-4200U - HDD 1 To - RAM 8 Go - NVIDIA GeForce GTX 850M 4 Go - LG E2251 - Logitech G105 - R.A.T 7 Contagion - Siberia V2 ''Orange''




Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #2 le: 19 Octobre 2010, 22:27:04 »
De quoi Aegoss ? Oo

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #3 le: 19 Octobre 2010, 22:42:56 »
Béh j'ai aussi, pas compris, sinon, tu doit confondre 128 bits et 128 octets, et aussi en pawn c'est des variables de 4 octets ( 32 bits ), et un tableau de 128 cell fait 512 octets ( 4096 bits ).


Ne confond pas caractères et bit ^^

Si tu parle de couper le message après qu'il est dépassé 128 caractères, béh pas besoin de le faire car sur samp la limite de caractères dans la chatbox ( donc dans l'entrer de texte ) est de 128 caractères ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #4 le: 20 Octobre 2010, 10:11:29 »
Oui scuse moi Sasuke ;)
En plus la honte.. je travail sur l'électronique et ça j'utilise souvent x'D
Bref :)
Oui mais justement, c'est que si un joueurs dépasse 128 chars je voudrais couper là et restaurer la fin du message ( que sa:mp coupe lui même ) pour qu'il n'a pas à le retaper ^^

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #5 le: 20 Octobre 2010, 12:59:00 »
béh tu peut pas trop vu que samp découpe à 128 caractères on peut pas connaitre les autres ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #6 le: 20 Octobre 2010, 14:17:32 »
C'est même mieux que ça, Sazuke, SAMP ne permet pas de saisir plus de 128 caractères dans le chat.

Par contre, dans le cas où le script rajoute un bout de chaîne (par exemple l'ID du joueur comme sur Lalu's Stunt), il se peut que la chaîne finale à afficher dépasse les 128 caractères.
Dans ce cas, il faut rechercher l'espace qui se trouve juste avant le 128° caractère et couper la chaîne à cet endroit là.
Ensuite, on utilise deux fois SendPlayerMessageToAll pour afficher les deux morceaux de la chaînes.

++
Syg
Courtesy of GtaManiac

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #7 le: 20 Octobre 2010, 21:01:50 »
Tout à fait ça Syg, mais mis à part Strlen pour compter le nombre de caractères, je sais pas faire.
Je suppose qu'il faudra créé un petit strtok ? non ?
Pourrais tu me montrer un début de script que j'essayerais de comprendre et compléter. Au moins, j'aurais appris encore une nouvelle chose :p

Merci :D

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #8 le: 20 Octobre 2010, 23:03:56 »
Non, pas de strtok.
De plus ici, il n'est pas possible d'utiliser une fonction toute faite (il en existe une en C mais elle n'a pas d'équivalent en PAWN).

Donc on fait simple :
new Chaine[255]; //<- Ça c'est la chaîne qui contiendra le message à afficher
new FinChaine[128];
new i;

// ICI, ON REMPLI LA CHAINE D'UNE FACON OU D'UNE AUTRE

/* Si la chaîne fait plus de 128 caractères */
if (strlen (Chaine) > 128)
{
   /* On part du 128° caractère et on remonte la chaîne jusqu'à ce qu'on trouve un espace */
   i=128;
   while (Chaine[i]!=' ' && i>0) // NB : Il y a un espace entre les deux quotes
   {
      i--; // Caractère précédent
   }

   /* A ce niveau, i nous donne l'index de l'endroit où il faut couper la chaine */
   /* On remplace l'espace par un 0 binaire qui va terminer la chaine à cette endroit */
   Chaine[i] = 0;

   /* On affiche les deux parties de la chaine */
   SendPlayerMessageToAll (playerid, Chaine); //Première partie qui se termine sur le caractère i
   SendPlayerMessageToAll (playerid, Chaine[i+1]); //Deuxième partie de la chaine qui commence au caractère i+1
}
else
{
   /* On affiche la chaine sans traitement */
   SendPlayerMessageToAll (playerid, Chaine);
}
NB : Code testé et approuvé par mes soins pour les besoins de cette réponse

A faire : Traiter le cas où la chaine ne contient pas d'espace (cas où i vaut 0 lorsqu'on sort de la boucle while)
Je te laisse traiter ce cas, ça te fera un bon exercice.

++
Syg
Courtesy of GtaManiac

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #9 le: 21 Octobre 2010, 10:15:18 »
Oki, merci beaucoup Syg ;)
Je travaille sur mon un autre système en ce moment ( Caravane ) que je posterais bien entendu puis j'essayerais de faire ton truc, dans tous les cas, j'te met au courant :)


Edit :

J'ai regarder un peu est :
ta variable FinChaine est inutilisé ? Pourquoi ? ^^
J'ai tester sans espace, ce qu'il se passe, c'est que ça coupe à 128 chars.. ^^
« Modifié: 21 Octobre 2010, 15:32:21 par chneuls »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #10 le: 21 Octobre 2010, 16:31:24 »
Pour la variable FinChaine, c'est juste que au début j'avais l'intention de copier la fin de la chaine dans une autre variable mais je me suis rendu compte qu'elle ne servait à rien et j'ai oublié de la supprimer. Tu peux donc la supprimer aussi.

Concernant le cas où la chaîne ne contient pas d'espace, je n'ai pas testé moi-même.
Si le code fonctionne comme ça, tant mieux.

++
Syg

Courtesy of GtaManiac

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #11 le: 21 Octobre 2010, 18:29:40 »
Merci beaucoup pour m'avoir '' fait " le travail mais je crois que j'ai '' compris '' vaguement mais bon c'est déjà ça :D

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #12 le: 22 Octobre 2010, 16:56:18 »
Bonsoir, je suis de retour pour Syg, Sim etc.. ( petite question : Ou est passée Cristab ? Il avais arrêter GTA et là le pawn ? :o)

Bonsoir

Je vais repondre a ta question tout simplement que j'ai arreter pendant tres peu de temps est a mon retour trop de changement pas le gout de revoir et voir les nouvelle fonction ect ect don sa bon voila puis plus le jeu pour tester non plus.

Mais je ne repeterais jamais assez le pawn et juste une question de logique.

++
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #13 le: 22 Octobre 2010, 17:33:48 »
Citer
Mais je ne repeterais jamais assez le pawn et juste une question de logique.

Jamais dit le contraire.. justement, voila là faiblesse du pawn, on dépend trop de sa:mp >.<

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Couper un message
« Réponse #14 le: 22 Octobre 2010, 17:58:51 »
Tu dépend pas de SA:MP, le pawn est un langage à part qui n'a rien d'exclusive à SA:MP.


Sinon si tu veut des nouvelles fonctions faut avoir beaucoup de connaissance en memory hacking pour créer des plugins côté client <-> serveur pour avoir des choses supplémentaire comme le plugin audio d'incognito ( qui n'est pas du memory hacking ), ou bien le plugin control NPC qui est dispo sur le forum sa-mp.com ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog