doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011
-
26 oct. 2008 à 20:49
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2012
-
6 nov. 2008 à 19:16
Je suis en train de créer un input pour changer de pseudo avec un input mais je rencontre un problème...
En effet quand je met ²gnagnagna mon pseudo se change en idefix`gnagnagna (jusque là ça me va) mais, si je met un espace entre le ² et le gnagnagna je me retrouve avec mon pseudo changer en idefix` (et la sa me va pas :x)
Pourriez vous m'indiquer comment faire pour résoudre ce problème? Merci d'avance.
Je vous poste le code pour que vous puissiez voir ou sa ne va pas.
on *:input:*:{
if ($left($1,1) == ²) {
if $mid($1,2) != $null {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $mid($1,2)
}
else {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $mid($1,3)
}
}
}
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 27 oct. 2008 à 09:09
C'est "logique" que ça te fasse ça.
Quand tu captures le texte, tu captures "$1" qui est le premier "mot" de la chaîne ayant comme séparateur l'espace.
En gros dans une chaîne comme:
"Ceci est un test"
Le code que tu as fais ne va regarder que "Ceci" sans s'occuper du reste.
Il existe plusieurs façons de faire. Étant donné la manière que tu as voulu employer, je vais essayer de garder la même pour que tu comprennes la démarche.
Au lieu d'utiliser "$1" qui va capturer uniquement le premier mot, on va utiliser "$1-2" qui va capturer les deux premiers (on pourrait utiliser carrément "$1-" qui capture toute la chaîne mais en l'occurrence c'est inutile, au pire des cas on aura besoin du second mot)
On va regarder la première lettre comme tu l'as fais avec le $left() en faisant ($left($1-2,1) == ²)
Et c'est à présent que va intervenir la modification du test:
Pour regarder si le second caractère est un espace on fera:
if ($mid($1-2,2,1) != $chr(32)) { nick $readini(mirc.ini,mirc,nick) $+ ` $+ $right($1,$len($1)-1) }
Ici, comme le second caractère de la sous-chaîne capturée n'est pas un espace, on peut directement définir que le suffixe à rajouter au pseudonyme est la suite de la chaîne et non le second mot. On utilisera alors l'expression:
$right($1,$len($1)-1) qui va capturer le premier mot en lui enlevant le premier caractère qui est le "²".
Pour le second cas (celui où il y a un espace), il suffit de faire le branchement conditionnel else et de mettre
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $2
On utilisera $2 directement car le fait qu'il y ait un espace en tant que second caractère signifie que $2 sera initialisée avec le second mot de la chaîne.
J'espère que mes explications sont compréhensibles, ça fait quelques temps que je n'ai pas touché à mIRC...
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 oct. 2008 à 10:36
salut
je pense que c'est un status que tu cherche a faire comme ton_pseudo`absent ou ton_pseudo`parti_manger
bref pour ton code
dejà le "if $mid($1,2) != $null" si il y a une espace c'est déjà KO
pour moi je fais
on *:input:*:{
var %nick $readini(mirc.ini,mirc,nick),%input $iif($mid($1,2) != $null,$mid($1,2),$2)
if ($left($1,1) == ²) {
if ($2- != $null) {
nick $+(%nick,`,%input)
}
}
}
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 27 oct. 2008 à 17:03
Bonsoir. Je viens de tester la méthode de tofu en l'adaptant un petit peu (le $right($1,$len($1)-1) ne marchais pas)
on *:input:*:{
if ($left($1-2,1) == ²) {
if ($mid($1-2,2,1) != $chr(32)) {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $mid($1,2)
}
else {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $2
}
}
}
j'ai encore un petit soucis, j'aimerais qu'il detecte quand il n'y as rien du tout ( if $2 == $null ne marche pas (allez comprendre).
Pourriez vous me donnez encore un petit coup de main?
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 27 oct. 2008 à 17:07
POur la méthode proposé par worldDMT ta méthode marche certe mais ne réponds pas a mes attente, en effet j'aimerais que sa me change de pseudo si je tape ²blabla ou si je tape ² blabla or ta solution ne permet le changement uniquement si je tape ² blabla
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 27 oct. 2008 à 21:32
WorldDMT voila les résultat du test de ta solution, j'ai été un peu surpris lol. Merci quand même de ton aide.
(21:30`20) >+@ idefix +@< ²test
[Nick] Tu changes ton pseudo pour idefix`test
(21:30`23) >+@ idefix`test +@< ah
[Nick] Tu changes ton pseudo pour idefix`test`h
(21:30`27) >+@ idefix`test`h +@< oh
[Nick] Tu changes ton pseudo pour idefix`test`h`h
(21:30`30) >+@ idefix`test`h`h +@< -_-
[Nick] Tu changes ton pseudo pour idefix`test`h`h`_-
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 28 oct. 2008 à 20:27
bonsoir. WorldDMT j'ai testé ta méthode elle est bien saf que $me renvoie le pseudo actuel ( si j'ai idefix`bla et que je met ²bla je vais me retrouver avec le pseudo idefix`bla`bla (j'utilise mirc 6.35) j'ai donc garder mon readini (non je ne suis pas tétu lol). Cependant j'ai réussit a avoir tout ce que je voulais en me faisant deux input et je me suis rendu compte que je me prenais la tête pour rien. Voici le code
on *:input:*:{
if $1 == ² {
if $2 != $null {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $2
}
else {
nick $readini(mirc.ini,mirc,nick)
}
}
if ($left($1,1) == ²) {
if $mid($1,2) != $null {
nick $readini(mirc.ini,mirc,nick) $+ ` $+ $mid($1,2)
}
}
}
Par contre WorldDMT peux tu m'expliquer comment ton code fonctionne ( $iif c'est quoi? ce qui remplace les { ? )
Merci donc a toi et a tofu de m'avoir aidé. =)
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 28 oct. 2008 à 20:41
j'ai oublié de te dire que $readini(mirc.ini,mirc,nick) = $me mais dans ce code on utilise $anick donc le pseudo alternatif celui qui vien en desous tu vois là ou tu met le pseudo il y a 2 cases essaye le 2eme donc celui que je vien de te donné
et quand tu voudra revenir tape //nick $anick attention 2 slache pas 1 seul "//" et ça devien a nouveau idefix sans aucune suite
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 4 nov. 2008 à 19:53
Ce qui ne va pas c'est que je ne sais pas si c'est la version de mirc que j'utilise (6.34) ou quoi mais $me renvoie le pseudo que j'ai actuellement comme je te l'ai déjà c/c.
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 4 nov. 2008 à 22:49
ça ne marche pas!! tant que $me resteras dans le code ça ne marcheras pas.
Je viens de trouver $mnick qui fait la même chose. et qui MARCHE. et si le sujet c'est ça car depuis l'autre fois je te dit que $me ne marche pas car il additionne les pseudo et tout les code que tu me propose utilise $me, j'ai beau essayer et réessayer sa ne fonctionne pas avec ta méthode.
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 4 nov. 2008 à 23:16
Que suis-je bête j'ai trouvé la raison pour laquelle ta remote ne marche pas et ne pourras pas marcher
(cf aide mirc)
$me
Retourne votre nick courant.
$mnick
Retourne votre nick principal.
en gros $me renvoie ton nick a l'état actuel des chose ( pseudo + extension) alors que $mnick renvoie le nick dans les options mirc (alt+e).
Bonne soirée
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 5 nov. 2008 à 09:18
si c'est question que ça marche pas essaye de voir encore c'est quoi le probleme car j'ai testé le code sur 3 version mIRC sur 6.21 , 6.32 , 6.35 et tout ça a marché donc si ça ne marche pas c'est que tu a un probleme venant de chez toi et arrete de me dire $me et $mnick et je ne sais quoi si tu pense que je suis si bete demande a d'autre donne leur ce code qu'il testent si ça marche ou pas
"ça ne marche pas!! tant que $me resteras dans le code ça ne marcheras pas."
"Que suis-je bête j'ai trouvé la raison pour laquelle ta remote ne marche pas"
eh wé t'es bete!! :/ car t'a rien decouvert
je t'ai dis ne cale plus sur ça tu ne connais rien de ce que tu dis regarde le code
le $gettok avec separateur 96 coupe le pseudo en 2 donc comme ça
TEST et blabla
j'ai ecris gettok 1 donc ça prend rien que TEST ensuite ça ajoute $chr(96) qui est egale a " ` " + le nouveau blabla que tu veux mettre
$gettok(TEST`blabla,1,96) returne TEST
donc ça n'a rien a y voir avec $mnick parceque une foi le pseudo changer tu verra que ton $mnick a changer aussi :/
mais bref pour moi je te demande de donner mon code a quelqun et il le teste chez lui peut etre tu le croira :)
mon code fonctionne a 100%
si tu veu je t'explique les etapes de ce code et tu verra que la logique dit que t'a un probleme a ton niveau.