RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009
-
8 juin 2007 à 16:25
cs_lebaronrouge
Messages postés288Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention14 février 2009
-
10 juin 2007 à 20:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_lebaronrouge
Messages postés288Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention14 février 2009 10 juin 2007 à 20:03
Si ce code vient a être finalisé en dialog d'auto join multiserver/salons avec choix des salons et auth auto selon les chans et les serv la j'adopte ca m'évitera de finir le mien qui traine et dont le courage me manque pour le finir ^^'
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 17:25
hum alors là ça change totalement le truc c'est un dialog de connexion complet avec autojoin que tu demande ... hum je vais aire travailler mes neurones xD
pour les chan pass je n'ai pas mis l'option car on en croise peu et que si le pass change il ne sert plus à rien il faut totalement enlever le salon du server enregistrer et remettre le nouveau chan pass. mais bon ça peu toujours se faire avec un peu de patience (je suis disponible que les week end en général)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 9 juin 2007 à 16:33
Utilise mirc 6.21 :/ mais je viens de testé ton code, le dialog est mal agencé, le mieux serais de faire deux list, une pour les server classé par network, l'autre pour les salons avec les pass pour les salon si il y a ( tu n'en tient pas compte non plus ) ton code ne permet pas de s'autoconnect au server que l'on a rentré, p-e une option aussi pour choisir le nick a utilisé pour le server.
J'men rend compte que ya pas reelement d'autojoin bien complet ici .
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 16:13
if ($devent == init && %ajoin) did -c $dname 11 <== me donne ==> /if: 'did' unknown operator
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 16:12
if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))<<<<= ne marche toujours pas :(
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 15:52
bon ben je me remet à la tâche. tant que tu y est tu n'as pas d'autres choses :x
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 9 juin 2007 à 15:48
Il y a encore des {} inutile
Tu peux simplifier certain if en les regroupant avec des &&
Mettre des identifieurs dans les while c'est plus lent, passe par des variable
Tu utilise plusieur variable plein de fois dans l'alias ajoin, plutot que de les déclaré a chaque fois, met un /var %a ,%b %c avec ou non les valeur qui leur corresponde ( $null si elle sont utilisé pour les regsub ) ca t'evitera des /unset
Il y a tjs un pb de {} car tu ne referme pas la { du init
Tes evenement on dialog doivent etre regroupés comme ça :
on *:dialog:ajoin:*:*:{
if ($devent == init && %ajoin) did -c $dname 11
elseif ($devent edit && $did isin 2.4) set $+(%,$iif($did 2,achan,aserv)) $did($did)
elseif ($devent == sclick) {
if ($did isnum 5-12) {
var %t = $+(-a.-r.-c.-g.-d.-Mg.,$did(11).state)
ajoin $token(%t,$calc($did - 5),46) %aserv %achan
}
}
}
Je pense que ça peux etre bon, mais je donne des parametre en trop pour certain click, le mieux serait de les ignoré dans l'alias mais j'ai remarqué quelque incohérence, pour le parametre -c, tu donne deux parametre ( -c et %aserv ) et tu vérifie des truc dans $3-,
Dailleur dans ton alias, TOUTES les conditions que tu fait
tu les répète avec une négation, alors que il suffit de mettre un else, ya vraiment plein de chose a amélioré :x
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 15:19
voila j'ai suivis tout ce que vous m'avez dit merci bien RCA ArKanis et Wims. Si vous voyez d'autre chose n'hésitez pas à me le dire. Autant sur le point de l'optimisation du code que sur l'améioration de celui ci.
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 9 juin 2007 à 14:31
Ouais, $hget n'a jamais supporté qu'on lui supprime des parenthèses, surement parce qu'il doit allé cherché l'information dans la ram, il faut normalement tjs mettre les parenthèses pour que le if sois logique mais j'ai une habitude d'en enlevé le plus possible : if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 13:49
ça y est j'ai trouver un truc qui marche :
on *:connect:{
if (%ajoin) {
join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
}
}
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 13:44
on *:connect:{
if (%ajoin && $hget(Ajoin,$server)) {
join $replace($v2,$chr(32),$chr(44))
}
}
j'ai essayer ça...et ça m'as donner : * /join: insufficient parameters
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 13:27
* /if: 'join' unknown operator <<<= voila ce que j'ai quand je met ça : " on *:connect:if (%ajoin && $hget(Ajoin,$server)) join $replace($v2,$chr(32),$chr(44)) "
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 13:17
j'ai la comande /noop (v6.2)
ok pour l'init
et pour les accolads c'est ce que j'ai regarder en premier
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 9 juin 2007 à 11:39
La commande /noop est apparus a la version 6.17.
Utilise on *:dialog:ajoin:init:*:{
Dans l'editeur de script mirc, vérifie que tu n'est pas un probleme d'accolade avec les boutons {}
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 9 juin 2007 à 09:38
Bon j'ai essayer de remplacer tout es on/off par des 1/0, les echo -q par les noop, ça :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
par ça :
# on 1:dialog:ajoin:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
j'ai optimiser un peu mais....ça ne marche plus....j'ai du foirer quelque part... je recherche le pourquoi du comment et je repost tout ça très vite.
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 8 juin 2007 à 19:09
ok merci bien Wims, je fait ça tout de suite =)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 8 juin 2007 à 19:02
Oui pour le noop et pour les regex, oué j'sais pas c'est juste que sur le on connect il étais vraiment inutile, en regardant les autres, c'est vrai que tu peux les laissé :)
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 8 juin 2007 à 18:42
et pour les regex je veux bien les remplacer mais.... comment?
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 8 juin 2007 à 18:40
pour le /noop ça fait :
noop $regsub($3-,/\s/g,$chr(44),%lmnop)
ou on met juste "/noop" ????
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 8 juin 2007 à 18:20
Oué, plein d'autre chose si tu veux :
-Quand ta un bloc de commande avec une seul commande du genre ici :
on *:exit:{ hsave -o Ajoin Ajoin.dat }
-Les {} ne sont pas nécéssaire et ralentisse l'execution d'un script (je ne te cache pas que pour ton addon, gagner 1 miliseconde n'a aucun interet, c'est juste a titre indicatif et un habitude a prendre)
-Il y a tjs cette chose bizarre :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
-Utilise /noop au lieu d'echo -q
-Unset plusieur var d'un coup : unset %var1 %var2
-Utilise /return plutot que halt
-Tu n'a pas changer le echo -a - en /linesep (plus propre)
-ça :
# on *:connect:{
# if (%ajoin == 1) {
# var %nexists $iif($hget(Ajoin,$server),true,false)
# if ($regex(%nexists,/^false$/i) == 1) {
# halt
# }
# elseif ($regex(%nexists,/^true$/i) == 1) {
# join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
# }
# }
# }
C'est plus qu'horrible :]
Tu peux optimiser :
on *:connect:if (%ajoin && $hget(Ajoin,$server)) join $replace($v2,$chr(32),$chr(44))
(on passe de 11 ligne a une ligne.)
-Tu abuses trop des regex alors que c'est inutile
-Tu as modifier ce que t'a dis ArKanis a propos du stockage bouléen dans les var mais j'vois encore des on/off et des $true/$false alors que tout devrais etre 0 ou 1
t'as du boulot :)
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 8 juin 2007 à 18:01
ok pour les ! je ne savais pas il ne me l'avais pas dit
j'ai refait pour l'alias (enfin j'ai remis pour ceux qui n'on pas l'alias /d ça allait plus vite :x)
j'ai regroupé mes on dialog.
Si vous voyez d'autres choses dites les moi.
Pour répondre a Wims j'ai mis cet addons car je n'en ai pas trouver en hash tables et que ça va plus vite que les autres. j'ai aussi mis ce code pour pouvoir progresser et améliorer mon code.
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 8 juin 2007 à 17:17
Ok j'étais resté trop longtemp sur la page avant les commentaires :)
Il n'empêche que tu devrais le prendre en compte
Le point d'exclamation en début de command est utilisé pour ne pas effectue la commande en tant qu'alias ( souvent utilisé pour debug, si qqun a un alias personnalisé "/echo" et qu'il veux effectue la commande de mirc /echo )
Du genre :
alias echo echo -a > $1-
alias ok echo ok
alias ok1 !echo -a $1-
:)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 8 juin 2007 à 17:02
Ce code n'est pas d'un niveau initié mais c'est pas très important.
Tu dis que le code n'est pas bugué mais d'entre, je vois ça :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ /d ajoin }
# }
Il manque surement l'alias /d
Tu devrais regroupé tes event on dialog et ne pas mettre les {} lorsque une seul commande est faite dans un bloc
Tu n'utilise pas elseif ou /else pour optimiser
if (%var == $null) if (%var != $false)
>> >>
if (!%var) if (%var)
(marche pour $null $false et 0)
mettre le ! pour les /commandes est inutile je pense étant donné que le code est censé etre ajouté sur un mirc qui fonctionne (
!echo -a - >> /help /linesep
Ce genre de code est présent a gogo sur le site, étant donné que le tient n'apporte rien de mieux que les autres, et qu'il est moins bien codé, c'est un peu inutile de l'avoir posté, essaye quand même de corriger.
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 8 juin 2007 à 16:56
c'est pareil avec $null (booléen)
regroupe tes events ON DIALOG :
on 1:dialog:ajoin:*:*:{
if ($devent == init) {
if (%ajoin == on) did -c 11
}
elseif ($devent == sclick) {
if($did == 4) set %aserv $did(ajoin,4)
elseif ($did == 5) ...
}
tu devrais plutôt utiliser les chiffres 1 et 0 au lieu de "on" et "off", vu que c'est booléen (encore une fois :D)
=> if (%ajoin) ...
enlève aussi les / devant d (lignes du début)
utilise elseif au lieu de halt
c'est déjà ça, non pas pour commencer, mais pour la suite :)
doob666
Messages postés149Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention25 janvier 2011 8 juin 2007 à 16:49
les ! devant les commandes c'est une vieille habitude de mes début, le mec avec qui j'ai appris faisait toujours ça et je les met (quand je fais pas gaffe lol) j'ai changé les if(%exa == $true) en (if (%exa) et les if (%exa == false) en if (!%exa) j'ai remplaçé la ligne que tu m'as dit
voila je repost cette source après les modifications. Merci bien RCA ArKanis. si tu vois d'autres choses signale les moi =)
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 8 juin 2007 à 16:25
pourquoi tu mets des ! devant des commandes ?
tu utilises des variables globales, mais t'aurais plutôt dû n'utiliser que des Hash Tables
if (%exa == $true) devient : if (%exa)
(vu que c'est booléen)
les halt sont-ils indispensables ?
ligne 154 :
var %find = $findtok($hget(Ajoin,$2),$3,1,32)
var %find2 = $deltok($hget(Ajoin,$2),%find,32)
devient (vu que tu n'utilises qu'une fois %find) :
var %find2 = $deltok($hget(Ajoin,$2),$findtok($hget(Ajoin,$2),$3,1,32),32)
sinon, si tu as par exemple :
var %a = 1
var %b = 2
mets plutôt ça : var %a 1, %b 2
J'ai pas testé sinon, j'ai pas vraiment le temps :(
10 juin 2007 à 20:03
9 juin 2007 à 17:25
pour les chan pass je n'ai pas mis l'option car on en croise peu et que si le pass change il ne sert plus à rien il faut totalement enlever le salon du server enregistrer et remettre le nouveau chan pass. mais bon ça peu toujours se faire avec un peu de patience (je suis disponible que les week end en général)
9 juin 2007 à 16:33
J'men rend compte que ya pas reelement d'autojoin bien complet ici .
9 juin 2007 à 16:13
9 juin 2007 à 16:12
9 juin 2007 à 15:52
9 juin 2007 à 15:48
Tu peux simplifier certain if en les regroupant avec des &&
Mettre des identifieurs dans les while c'est plus lent, passe par des variable
Tu utilise plusieur variable plein de fois dans l'alias ajoin, plutot que de les déclaré a chaque fois, met un /var %a ,%b %c avec ou non les valeur qui leur corresponde ( $null si elle sont utilisé pour les regsub ) ca t'evitera des /unset
Il y a tjs un pb de {} car tu ne referme pas la { du init
Tes evenement on dialog doivent etre regroupés comme ça :
on *:dialog:ajoin:*:*:{
if ($devent == init && %ajoin) did -c $dname 11
elseif ($devent edit && $did isin 2.4) set $+(%,$iif($did 2,achan,aserv)) $did($did)
elseif ($devent == sclick) {
if ($did isnum 5-12) {
var %t = $+(-a.-r.-c.-g.-d.-Mg.,$did(11).state)
ajoin $token(%t,$calc($did - 5),46) %aserv %achan
}
}
}
Je pense que ça peux etre bon, mais je donne des parametre en trop pour certain click, le mieux serait de les ignoré dans l'alias mais j'ai remarqué quelque incohérence, pour le parametre -c, tu donne deux parametre ( -c et %aserv ) et tu vérifie des truc dans $3-,
Dailleur dans ton alias, TOUTES les conditions que tu fait
tu les répète avec une négation, alors que il suffit de mettre un else, ya vraiment plein de chose a amélioré :x
9 juin 2007 à 15:19
9 juin 2007 à 14:31
9 juin 2007 à 13:49
on *:connect:{
if (%ajoin) {
join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
}
}
9 juin 2007 à 13:44
if (%ajoin && $hget(Ajoin,$server)) {
join $replace($v2,$chr(32),$chr(44))
}
}
j'ai essayer ça...et ça m'as donner : * /join: insufficient parameters
9 juin 2007 à 13:27
9 juin 2007 à 13:17
ok pour l'init
et pour les accolads c'est ce que j'ai regarder en premier
9 juin 2007 à 11:39
Utilise on *:dialog:ajoin:init:*:{
Dans l'editeur de script mirc, vérifie que tu n'est pas un probleme d'accolade avec les boutons {}
9 juin 2007 à 09:38
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
par ça :
# on 1:dialog:ajoin:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
j'ai optimiser un peu mais....ça ne marche plus....j'ai du foirer quelque part... je recherche le pourquoi du comment et je repost tout ça très vite.
8 juin 2007 à 19:09
8 juin 2007 à 19:02
8 juin 2007 à 18:42
8 juin 2007 à 18:40
noop $regsub($3-,/\s/g,$chr(44),%lmnop)
ou on met juste "/noop" ????
8 juin 2007 à 18:20
-Quand ta un bloc de commande avec une seul commande du genre ici :
on *:exit:{ hsave -o Ajoin Ajoin.dat }
-Les {} ne sont pas nécéssaire et ralentisse l'execution d'un script (je ne te cache pas que pour ton addon, gagner 1 miliseconde n'a aucun interet, c'est juste a titre indicatif et un habitude a prendre)
-Il y a tjs cette chose bizarre :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
-Utilise /noop au lieu d'echo -q
-Unset plusieur var d'un coup : unset %var1 %var2
-Utilise /return plutot que halt
-Tu n'a pas changer le echo -a - en /linesep (plus propre)
-ça :
# on *:connect:{
# if (%ajoin == 1) {
# var %nexists $iif($hget(Ajoin,$server),true,false)
# if ($regex(%nexists,/^false$/i) == 1) {
# halt
# }
# elseif ($regex(%nexists,/^true$/i) == 1) {
# join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
# }
# }
# }
C'est plus qu'horrible :]
Tu peux optimiser :
on *:connect:if (%ajoin && $hget(Ajoin,$server)) join $replace($v2,$chr(32),$chr(44))
(on passe de 11 ligne a une ligne.)
-Tu abuses trop des regex alors que c'est inutile
-Tu as modifier ce que t'a dis ArKanis a propos du stockage bouléen dans les var mais j'vois encore des on/off et des $true/$false alors que tout devrais etre 0 ou 1
t'as du boulot :)
8 juin 2007 à 18:01
j'ai refait pour l'alias (enfin j'ai remis pour ceux qui n'on pas l'alias /d ça allait plus vite :x)
j'ai regroupé mes on dialog.
Si vous voyez d'autres choses dites les moi.
Pour répondre a Wims j'ai mis cet addons car je n'en ai pas trouver en hash tables et que ça va plus vite que les autres. j'ai aussi mis ce code pour pouvoir progresser et améliorer mon code.
8 juin 2007 à 17:17
Il n'empêche que tu devrais le prendre en compte
Le point d'exclamation en début de command est utilisé pour ne pas effectue la commande en tant qu'alias ( souvent utilisé pour debug, si qqun a un alias personnalisé "/echo" et qu'il veux effectue la commande de mirc /echo )
Du genre :
alias echo echo -a > $1-
alias ok echo ok
alias ok1 !echo -a $1-
:)
8 juin 2007 à 17:02
Tu dis que le code n'est pas bugué mais d'entre, je vois ça :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ /d ajoin }
# }
Il manque surement l'alias /d
Tu devrais regroupé tes event on dialog et ne pas mettre les {} lorsque une seul commande est faite dans un bloc
Tu n'utilise pas elseif ou /else pour optimiser
if (%var == $null) if (%var != $false)
>> >>
if (!%var) if (%var)
(marche pour $null $false et 0)
mettre le ! pour les /commandes est inutile je pense étant donné que le code est censé etre ajouté sur un mirc qui fonctionne (
!echo -a - >> /help /linesep
Ce genre de code est présent a gogo sur le site, étant donné que le tient n'apporte rien de mieux que les autres, et qu'il est moins bien codé, c'est un peu inutile de l'avoir posté, essaye quand même de corriger.
8 juin 2007 à 16:56
regroupe tes events ON DIALOG :
on 1:dialog:ajoin:*:*:{
if ($devent == init) {
if (%ajoin == on) did -c 11
}
elseif ($devent == sclick) {
if($did == 4) set %aserv $did(ajoin,4)
elseif ($did == 5) ...
}
tu devrais plutôt utiliser les chiffres 1 et 0 au lieu de "on" et "off", vu que c'est booléen (encore une fois :D)
=> if (%ajoin) ...
enlève aussi les / devant d (lignes du début)
utilise elseif au lieu de halt
c'est déjà ça, non pas pour commencer, mais pour la suite :)
8 juin 2007 à 16:49
voila je repost cette source après les modifications. Merci bien RCA ArKanis. si tu vois d'autres choses signale les moi =)
8 juin 2007 à 16:25
tu utilises des variables globales, mais t'aurais plutôt dû n'utiliser que des Hash Tables
if (%exa == $true) devient : if (%exa)
(vu que c'est booléen)
les halt sont-ils indispensables ?
ligne 154 :
var %find = $findtok($hget(Ajoin,$2),$3,1,32)
var %find2 = $deltok($hget(Ajoin,$2),%find,32)
devient (vu que tu n'utilises qu'une fois %find) :
var %find2 = $deltok($hget(Ajoin,$2),$findtok($hget(Ajoin,$2),$3,1,32),32)
sinon, si tu as par exemple :
var %a = 1
var %b = 2
mets plutôt ça : var %a 1, %b 2
J'ai pas testé sinon, j'ai pas vraiment le temps :(