Petit bug et optimisation de code

Résolu
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007 - 19 juin 2005 à 11:47
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 - 19 juin 2005 à 22:13
Bonjour à tous,

Voilà, j'ai fait quelques tests pour un addon perso, et je suis tombé sur un ptit bug .
En effet, j'ai automatisé quelques commandes dès mon arrivée sur un
channel; hélàs, si la fenêtre du chan n'est pas active, ça ne
fonctionne pas du tout

<hr size= "2" width="100%">on ^*:JOIN:#:{ .timerload 1 1 joined $chan $me $nick }

alias joined {

var %channel $readini($scriptdirultra.ini,ultra,6)

var %text $readini($scriptdirultra.ini,ultra,5)

if ($1 == %channel) {

If (Arkadia-quizz ison $1) mode $1 +h Arkadia-quizz

If (Aks_Quizz_[b0T] ison $1) mode $1 +h Aks_Quizz_[b0T]

If (evil| ison $1) mode $1 +v evil|

If (Kaname-chan ison $1) mode $1 +h Kaname-chan

If (Stats ison $1) mode $1 +h Stats

If ($3 == $2) msg %channel %text

}

}


<hr size="2" width="100%">Pour information, la partie 6 du fichier ini
correspond au channel (aussi à %channel) où je veux faire les commandes
et la partie 5 à une phrase "d'entrée" (aussi à %text). J'ai fait en
alias, car sinon je ne peux pas mettre de timer et donc, le script fait
ses commandes avant que j'ai l'accès à mes droits d'opérateur; j'ai
aussi utilisé "ison" pour ne pas renvoyer d'erreur quand les personnes
ne sont pas là.

1/ Comment résoudre ce petit problème ? A mon avis, il faudrais changer ceci " if ($1 %channel)" , mais je ne sais pas par quoi le remplacer \

2/ L'accèss à une partie d'un fichier ini en utilisant $readini() est-
il beaucoup plus lent que l'utilisation d'une variable %x ?

3/ Avec un dialogue ouvert, si je change de channel et que je met le
mode +v à quelqu'un, ça renvoie une erreur car le dialogue à gardé le
nom de "l'ancien" channel, alors que j'utilise l'identifieur $active
(avec $chan, c'est pareil); si je réouvre le dialogue sur le
"nouveau" channel, ça fonctionne: comment résoudre ce petit bug ?



Merci d'avance

10 réponses

cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
19 juin 2005 à 12:02
On me*:Join:*:{ .timerload 1 1 joined $chan $me $nick
}



essayes ek ça ..

-1337 connexion-
3
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
19 juin 2005 à 12:24
Pour la 2 :


Les variables sont largement plus rapides que les $readini, donc si tu dois évaluer un $readini plusieurs fois, place le dans une variable.

3 : Il est ou le dialog ? ;p Montre nous un petit bout de code stp



-=[MaX_62]=-
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
19 juin 2005 à 19:47
/help /scid
3
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
19 juin 2005 à 20:45
Au lieu de faire /join #chan , utilises /scid $activecid join #chan (je crois)



-=[MaX_62]=-
3

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

Posez votre question
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007
19 juin 2005 à 12:18
@Tofu:

Hum... oui, ça marche!

Mais, pour tout te dire, je ne l'aurai pas cru (non pas que tu donne des mauvais conseils hein, au contraire ^^) car le me de On me*:Join:*:{ signifiais
pour moi que: si quelqu'un d'autre viens, le reste du code ne
marcherais pas, car le "me" impliquais forcément que ca ne prenne pas
en compte la venue d'un autre user sur le chan ^^. Merci beaucoup ! bug
fixé



Des solutions pour les questions 2 et 3 ?



ps: je mettrais ta réponse et les autres en "accepté" quand j'aurais tout réglé

Merci encore
0
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007
19 juin 2005 à 12:42
@MaX_62:

Wow, merci encore une réponse très rapide

Donc, pour la 2 c'est noté



Pour la 3:

Ah, oui... évidement (désolé d'avoir oublié :s):

partie dialog:

radio "Stats", 44, 73 39 22 10, tab 24

radio "Server", 42, 73 30 27 10, tab 24

radio "Mode", 43, 41 57 24 10, tab 24

radio "Kick/Ban", 55, 41 48 31 10, tab 24

radio "Kick", 56, 41 39 22 10, tab 24

radio "IrcOp", 40, 41 30 25 10, tab 24

button "Go", 46, 77 61 21 9, tab 24

partie events:

if ($did == 43) set %option 16

if ($did == 55) set %option 32

if ($did == 56) set %option 31

if $did == 46 {

if (%option == 16) { mode $active $$?"Parametre:" $$?"Nick:" }

if (%option == 31) kick $active $$?"Nick:"

if (%option == 32) { var %banusr $$?"Nick:" | mode $active
+bb $address(%banusr,1) $address(%banusr,2) | kick $active %banusr }

}



Donc, hum, voilà, on sélectionne un radio, on fait Go quand on est prêt
et hop ca fait une action. Le code est un peu long pour ça, je vous
l'accorde, mais j'ai trouvé que ça =\. Alors, des idées ?



Merci encore
0
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007
19 juin 2005 à 19:29
Hello,

Euh, j'me suis trompé =\

En fait, le bout de code ci-dessus marche, le $active aussi ^^

C'est ici que ça ne marche pas comme je le voudrais:



dialog new {

title "test"

size -1 -1 81 43

option dbu

radio "1", 1, 2 3 16 10

radio "2", 2, 2 12 18 10

radio "3", 3, 2 22 19 10

button "Button", 4, 48 27 20 10

button "join", 5, 34 4 24 10

}

on *:DIALOG:new:*:*:{

if $devent == sclick {

if ($did == 1) set %option 1

if ($did == 2) set %option 2

if ($did == 3) set %option 3

if $did == 4 {

if (%option == 1) { mode $active $$?"Parametre:" $$?"Nick:" }

if (%option == 2) kick $active $$?"Nick:"

if (%option == 3) { var %banusr $$?"Nick:" | mode $active
+bb $address(%banusr,1) $address(%banusr,2) | kick $active %banusr }

}

if $did == 5 { join #chantest }

}

}



Donc voilà: je suis connecté au server 1 et au server 2 en meme temps,
j'ouvre mon dialogue sur le server 1, je vais sur le server 2 et
j'appuie sur le boutton avec l'ID 5 (nommé 'join') et là, ca me
connecte au chan sur le server 1 ,
alors que la fenêtre du server 2 était active. D'après la logique du
scripting, cette programmation n'est qu'une façon 'automatisée' de
faire une action (ici, join #chantest), donc, si je tapais '/join
#chantest' sur le server 2, j'y serai connecté dans les plus brefs
délais

Soit je n'ais pas compris une notion sur l'utilsation de ce boutton, ce
qui est fort probable (c'est pour celà que je fais appel à vous ^^),
soit il y a un bug quelque part



Merci d'avance
0
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007
19 juin 2005 à 20:43
@Fjxokt:

Ce que je voulais comprendre, c'est pourquoi le dialog ne sait pas sur quel server je suis ?

D'après ce que j'ai cru comprendre sur ce la fonction, bref l'identifieur scid retourne
l'id de connection: 1 pour le premier server auquel je suis connecté, 2
pour le deuxième...etc... Mais commence puis -je exploiter celà ?

Merci d'avance :]
0
Lestat_2070 Messages postés 71 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 5 mars 2007
19 juin 2005 à 21:00
@MaX_62:

Ca marche à la perfection ! Merci beaucoup, parce que je n'avais
vraiment pas du tout compris le paragraphe sur la commande (et pas
l'identifieur scid)

Bref, j'ai un peu de mal à comprendre la totalité de cette commande, mais à force de tester et de l'utiliser, ca devrais aller



/scid <-rsatM | N> [command]

Changes la
connexion active d'un script pour l'id de connexion N, où N est une valeur $cid.




Toutes les commandes exécutées après la commande /scid seront faites sur
le nouvel id de connexion.



L'option -r remets l'id de connexion à
la valeur originale pour ce script.



Si vous spécifiez un paramètre de
commande, l'id de connexion est fixé seulement pour cette
commande....



Tout mes problèmes sont résoluts ! Merci à la communauté d'iRcFR !
0
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
19 juin 2005 à 22:13
de rien, ça devient assez rare les gens qui cherchent vrment avant de
venir nous poser des questions, donc qd on peut vraiment aider
quelqu'un c'est avec plaisir ;)
-1337 connexion-
0
Rejoignez-nous