Changement de pseudo avec readini

Résolu
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011 - 26 oct. 2008 à 20:49
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Derniè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)
    }
  }
}

24 réponses

WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
28 oct. 2008 à 09:45
oui t'a raison j'ai pas testé avec autre que mettre "²" excuse moi :)

c'est donc comme ça

on *:input:*:if ($left($1,1) == ²) $iif(($2- != $null) || ($mid($1,2) != $null),nick $+($me,`,$iif($mid($1,2) != $null,$mid($1,2),$2)))

mais si ton pseudo alternative est comme ton pseudo utilise celui ci c'est mieu

on *:input:*:if ($left($1,1) == ²) $iif(($2- != $null) || ($mid($1,2) != $null),nick $+($anick,`,$iif($mid($1,2) != $null,$mid($1,2),$2)))

donc on utilise $anick au lieu de $me ^^
3
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
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...
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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)
    }
  }
}

NB: j'ai pas testé essaye chez toi si ça donne ^^
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
27 oct. 2008 à 18:04
ok je vois bon j'ai testé celui ci et t'a pas besoin du "$readini" tu met juste "$me"
donc ça devient comme celà

on *:input:*:{
  var %nick $me,%input $iif($mid($1,2) != $null,$mid($1,2),$2)
  if (($left($1,1) == ²) && ($2- != $null) || ($mid($1,2) != $null)) nick $+(%nick,`,%input)
}
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
27 oct. 2008 à 18:10
aussi tu peux prendre celui ci ça revien au meme

on *:input:*:$iif(($left($1,1) == ²) && ($2- != $null) || ($mid($1,2) != $null),nick $+($me,`,$iif($mid($1,2) != $null,$mid($1,2),$2)),return)
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
27 oct. 2008 à 18:15
ou meme sans le "return" a la fin du 2eme code c'est pareil
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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`_-
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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é. =)
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
28 oct. 2008 à 20:36
justement je t'avais dis mais si ton pseudo alternative est le meme utilise celui du bas donc celui ci


on *:input:*:if ($left($1,1) == ²) $iif(($2- != $null) || ($mid($1,2) != $null),nick $+($anick,`,$iif($mid($1,2) != $null,$mid($1,2),$2)))

pour le $iif tape /help $iif

c'est $iif(A,B,C) donc si A est correcte il retourne B si non il retourne C
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
31 oct. 2008 à 12:45
puisque ton pseudo n'est pas comme le pseudo alternatif pk pas utilisé un token?
donc ça devient comme ça

on *:input:*:if ($left($1,1) == ²) $iif((($2- || $mid($1,2)) != $null),nick $+($gettok($me,1,96),$chr(96),$iif($mid($1,2) != $null,$mid($1,2),$2)))


essaye celui ci c'est garanti ;)

et je repete que $me et le $readini que tu fais est le meme si tu veux essaye avec //echo
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011
31 oct. 2008 à 19:37
WorldDMT tu est tétu dans le genre non? $me ne marche pas mais readini marche, je n'y peux rien c'est comme ça.
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
1 nov. 2008 à 09:13
ok merci je suis tetus moi j'ai testé et j'ai fais comme ça
j'ai mis un pseudo TEST
et j'ai fais

//echo -a $me ça a donné TEST

//echo -a $readini(mirc.ini,mirc,nick) ça a donné TEST

j'ai taper ²blabla le pseudo est devenu TEST`blabla

ensuite j'ai fais

//echo -a $me ça a donné TEST`blabla

//echo -a $readini(mirc.ini,mirc,nick) ça a donné TEST`blabla

mais bref ça c'est pas ce qui importe toi tu veux que a chaque "² blabla" ou "²blabla" le pseudo change

donc le dernier code avec le token donne le resultat que tu cherche essaye le ensuite vien me dire ce qui ne va pas
ok ^^

je le remet encore une fois de plus

on *:input:*:if ($left($1,1) == ²) $iif((($2- || $mid($1,2)) != $null),nick $+($gettok($me,1,96),$chr(96),$iif($mid($1,2) != $null,$mid($1,2),$2)))

essaye et dis moi ce qui ne va pas

@+
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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.
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
4 nov. 2008 à 19:57
bref ne cale pas sur ça c'est pas ça le sujet

essaye le code et dis moi si ça marche ou pas
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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.
0
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 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
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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.
0
Rejoignez-nous