Petit bug et optimisation de code

[Résolu]
Signaler
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007
-
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
-
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

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



essayes ek ça ..

-1337 connexion-
Messages postés
879
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
29 juin 2007

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]=-
Messages postés
840
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
1
/help /scid
Messages postés
879
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
29 juin 2007

Au lieu de faire /join #chan , utilises /scid $activecid join #chan (je crois)



-=[MaX_62]=-
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007

@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
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007

@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
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007

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
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007

@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 :]
Messages postés
71
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
5 mars 2007

@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 !
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
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-