begin process at 2010 02 10 16:18:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive IRC

 > 

Archives

 > 

Scripting

 > 

Problèmes avec les tokens


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problèmes avec les tokens

mercredi 6 juillet 2005 à 06:27:11 | Problèmes avec les tokens

ckemoua2

Membre Club
bonjour. Est ce que quelqu'un peut me dire où est le problème dans cet alias ? Alias Testage { var %a test un deux var %b TEST UN DEUX var %c 0 while (%c != $gettok(%a,0,32)) { inc %c if ($istokcs($1-,$gettok(%a,%c,32),32)) { var %adire $reptok($1-,$gettok(%a,%c,32),$gettok(%b,%c,32),32) } } say %adire } Lorsque je fais: //say $reptok(test un deux,test,TesT,32) Or là, j'ai une erreure dans le " $reptok($1-,$gettok(%a,%c,32),$gettok(%b,%c,32),32) " Mon problème étant que j'aimerai pouvoir remplacer d'autre mots que "test". Merci d'avance :d
mercredi 6 juillet 2005 à 06:28:32 | Re : Problèmes avec les tokens

ckemoua2

Membre Club
J'ai oublié une phrase dsl. " Lorsque je fais: //say $reptok(test un deux,test,TesT,32) çà fonctionne correctement et me sort ( TesT un deux ) Voilà.
mercredi 6 juillet 2005 à 10:39:57 | Re : Problèmes avec les tokens

Nolson

Membre Club
Assigne $1- à ta variable %adire au début, ensuite remplace tous les $1- de tes identifieurs de tokens par %adire.
N'oublie pas le "=" dans la syntaxe de déclaration des vars.

Mais si tu cherches à faire du remplacement, jette un oeil à $replace et $replacecs
mercredi 6 juillet 2005 à 13:08:07 | Re : Problèmes avec les tokens

ckemoua2

Membre Club
Alias Testage { var %adire = $1- var %a = un deux trois var %b = Un Deux Trois var %c = 0 while (%c != $gettok(%adire,0,32)) { inc %c if ($istokcs(%adire,$gettok(%a,%c,32),32)) { var %adiree = $reptok(%adire,$gettok(%a,%c,32),$gettok(%b,%c,32),32) var %adire = $replace(%adire,$gettok(%a,%c,32),$gettok(%b,%c,32)) } } say /testage $1- say %adire ($replace) say %adiree ($reptok) } Donc voilà, j'ai essayé de tester avec un $replace comme tu m'as conseillé Nolson, a vrai dire je suis a l'aise ni avec l'un ni avec l'autre... En fait les deux ne fonctionnent pas tout a fait comme il faudrait.... Soit ( le $reptok ) ne me sort rien si ma phrase ne contient pas de mot dans mes var de remplacement, soir le $replace ne tiens pas compte des espaces et remplace du coup testeur en TESTeur. Cet alias "en test" sera ensuite combiner si j'y arrive a un on input pour détecter en plus les pseudos et modifier leurs mise en forme. Voilà :s J'ai déjà posté un thème identique il y'a un bail.. mais n'ayant pas trouvé là solution ni par moi meme ni par le site j'avais un peu abandonné. et là, je remets çà ;) Merci a tous pour toute aide éventuelle. CkemouA :d
mercredi 6 juillet 2005 à 16:30:18 | Re : Problèmes avec les tokens

Huitre

si j ai bien compris tu veux faire un $reptok d un $gettok, je te conseille de jeter un oeil sur $puttok qui lui remplace ce que tu veux a l endroit ou tu veux, combiné au $findtok , tu devrais t en sortir ...


mercredi 6 juillet 2005 à 18:04:14 | Re : Problèmes avec les tokens

Nolson

Membre Club
Il faut dire avant tout que le code n'est pas génial, mais au moins tu te donnes la peine de le faire (comparé à certain(e)s qui demandent du tout cuit), donc ça me donne envie de t'aider.

"En fait les deux ne fonctionnent pas tout a fait comme il faudrait....
Soit ( le $reptok ) ne me sort rien si ma phrase ne contient pas de mot dans mes var de remplacement"

Normal, tu essaies les deux solutions en même temps et tu as bien assigné $1- à %adire mais pas à %adiree.
Ensuite tu modifies la variable %adiree à partir de %adire, et tu ne fais ton test que sur %adire donc si tu n'as aucun mot de ta liste, il ne passe pas le "if" et donc %adiree ne prend jamais de valeur.

"soir le $replace ne tiens pas compte des espaces et remplace du coup testeur en TESTeur."

Tout à fait, il faut essayer de le formater à ce qu'on recherche, car utilisé en l'état ça ne convient pas à ce que tu désires.

Maintenant que tu viens de nous en dire plus, on voit où tu veux en venir, en fait tu cherches à repérer les nicks dans les phrases que tu tapes pour leur donner un format particulier. Donc même avec la première méthode, tu aurais eu besoin de créer une liste des nicks présents sur le chan à chaque input, afin de les comparer. Imagine la lourdeur sur les gros chans. De plus si un même nick est répété deux fois dans la phrase seul le premier aurait été formaté.

Pour rester dans la méthode token, voici un exemple parmi tant d'autres de ce que tu aurais pu faire :

alias testage {
  ;on initialise les variables ( $0 correspond au nombre de mots dans $1- )
  var %c = $0 , %adire = $1- , %d1 , %d2
  ;on boucle sur le nombre de mots
  while (%c) {
    ;on assigne les mots un par un à une variable
    %d1 = $gettok(%adire,%c,32)
    ;on verifie si le mot est un nick du salon
    if (%d1 ison #) {
      ;on assigne à une nouvelle variable le nouveau format du nick
      ;par exemple : première lettre en majuscule et nick en gras

      %d2 = $chr(2) $+ $iif($left(%d1,1) isalpha,$upper($v1),$v1) $+ $right(%d1,-1) $+ $chr(2)
      ;on remplace le nick sans format par le nick formaté
      %adire = $puttok(%adire,%d2,%c,32)
    }
    dec %c
  }
  ;on envoie le message (mettre %adire pour envoyer avec formatage de nick ou $1- pour envoyer sans formatage)
  .msg # %adire
  ;on retourne en echo la nouvelle phrase formatée
  echo -t # ( $+ $me $+ ) %adire
}

A utiliser dans l'input, et ne pas oublier de haltdef. Le formatage du nick s'effectue dans la ligne bleue.
Quand le sens d'évolution de la variable de la boucle n'a pas d'importance (ce n'est pas toujours le cas), il vaut mieux décrémenter cette dernière, c'est plus lisible.
Voila le principe de base, à toi de le mettre à ta sauce.
jeudi 7 juillet 2005 à 10:41:20 | Re : Problèmes avec les tokens

ckemoua2

Membre Club
Coucou. Petite précision, j'ai du mal m'exprimer. Cet alias doit servir (et non, çà marche toujours pas lol) à remplacer un(des) mot(s) ( Précisé(s) au préalable dans une variable ) dans une phrase, non pas les pseudos. Je suis donc en train de tester la solution de Huitre. Pour ce qui est de ta solution Nolson, qui fonctionne, j'ai juste deux petite questions: L'identifiant $v1 il équivaut a quoi ? et ensuite. Lorsque je teste une phrase comprenant un pseudo, çà me supprime sa première lettre( au pseudo ) Je ne sais pas si çà vient de moi ou pas :) " Coucou CrEsuS devient . |10:29:34| (CrEsUs) Coucou rEsUs " A par avoir enlver les commentaires pour y voir plus clair je n'ai touché a rien.
jeudi 7 juillet 2005 à 14:34:56 | Re : Problèmes avec les tokens

Nolson

Membre Club

Tu avais dit que cet alias servirait à detecter les pseudos et changer leurs mises en forme ;-)
Mais c'est pas grave, y a pas de problème. Il suffit d'adapter le code à ce que tu désires.

if (%d1 ison #) repère le pseudo afin de changer sa mise en forme ensuite. Si tu veux repérer un mot quelconque contenu dans une variable il suffit que tu la remplaces par    if (%d1 isin %VariableContenantLesMots)

Je suppose que tu n'as pas la version 6.16 de mIRC. $v1 est un nouvel identifieur équivalent à $ifmatch. Tu peux donc le remplacer par $ifmatch.
Donc c'est normal que tu n'aies pas la première lettre car cette identifieur n'existe pas dans ta version de mIRC.

Dans tous les cas à toi d'adapter la mise en forme du mot (variable %d2) et du retour en echo à ce que tu recherches.
Bonne continuation.

jeudi 7 juillet 2005 à 15:04:48 | Re : Problèmes avec les tokens

Nolson

Membre Club
Je viens de m'apercevoir que "le test contrôlant que le premier caractère est une lettre afin de la mettre en majuscule" est inutile. $upper retournera de toute façon le caractère tel qu'il est si ce n'est pas une lettre. Donc pas besoin de t'embêter avec le $iif.

%d2 = $chr(2) $+ $iif($left(%d1,1) isalpha,$upper($v1),$v1) $+ $right(%d1,-1) $+ $chr(2)
devient :
%d2 = $chr(2) $+ $upper($left(%d1,1)) $+ $right(%d1,-1) $+ $chr(2)
jeudi 7 juillet 2005 à 15:59:30 | Re : Problèmes avec les tokens

Nolson

Membre Club
Oups, une petite ânerie, au niveau du repérage :
Ne pas mettre if (%d1 isin %VariableContenantLesMots) qui captera même les portions de mots (ce n'est pas ce que tu veux) mais if ($istokcs(%VariableContenantLesMots,%d1,32)) qui verifiera uniquement les mots entiers.

1 2

Cette discussion est classée dans : test, var, problèmes, gettok, reptok


Répondre à ce message

Sujets en rapport avec ce message

Question dont la reponse me sera bien utile [ par Tidam ] Alors Voila C juste que j'aimerais savoir comment on fait pour dire que 1 variable soit = a toutes les variables dont le nom commence par %test-Exempl probleme de variable [ par Virtuallllll ] depuis aujourd'hui plus aucun script qui utilise des variables ne marche ... a chaque fois ds le status il me met "%cmd Unknown command"et qd j'essaye %test [ par xionoxid ] Salut à tous enfaite je voudrais mettre %script = Mon script preferetitle "Configuration de %script "mais ça veut pas sur la fenetre il affiche Config Bleh ! un test [ par Knox ] Changement de nick rapide [ par DJOz ] Voila je bosse sur un changement de nick rapide, le script de base a ete repeché sur votre site voila la source on 1:input:*: { if ( !oqp == $gettok( $reptok($reptok($reptok [ par N4d1n3 ] K. Avec ça, je peux faire deux $reptok... a 3 ça marche pu. Mais moi je veux mettre plus de smiley a remplacer, comment je fais? Exemple je veux rajou Problème bête [ par CyberP ] J'ai mis ce code (c'est juste un test) dans un remote mais il ne fonctionne pason *:TEXT:*:*:{ /say test}Quelle est l'erreur s'il vous plait ?CyberP, UN PB AVEC /SCON [ par skalp ] alias view { if ($scon(0) > 0 ) { /write -c $1- var %x = 1 :next /scon %x /write $1- etat $!status /scon %x /write $1- reseau $!netw faire une boucle de $query [ par jujuquatre ] ~~~~~~~~~~~QuQuQuatrEuH~~~~~~~~~~~Salut, Je voudrais faire une boucle que quand quelqu'un change de pseudo sa regarde dans nos pv si il est dedans et Interdire un mot [ par theNoX ] Bonsoir J'aimerais savoir comment interdir un mot :le mot serai "test" et celui ci dans n'importe quel commande du genre :On *:text:!msg *:#: { /com


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,621 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales