GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chneuls 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
-
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 .
-
De quoi Aegoss ? Oo
-
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 ^^
-
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 ^^
-
béh tu peut pas trop vu que samp découpe à 128 caractères on peut pas connaitre les autres ^^
-
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
-
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
-
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
-
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.. ^^
-
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
-
Merci beaucoup pour m'avoir '' fait " le travail mais je crois que j'ai '' compris '' vaguement mais bon c'est déjà ça :D
-
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.
++
-
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 >.<
-
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 ^^
-
Je pensais à la team SA:MP qui à lancer le projet et qui nous fournis les fonctions.
Le memory hacking, faut déjà le coder ;) J'vais voir pour apprendre à fond des codes autres que pawno, j'connais un peu de C/C++ mais bon, j'utilise pas couramment, ^^