SYSTEME D'AWAY EN DIALOG

Temp_Area Messages postés 110 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 février 2011 - 3 nov. 2005 à 09:55
KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006 - 5 nov. 2005 à 12:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34461-systeme-d-away-en-dialog

KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006
5 nov. 2005 à 12:38
d'accord merci du conseil :)
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
4 nov. 2005 à 23:59
c'est simple (et d'ailleurs tu as fait le même type de conversion toi aussi...)
$awaytime te retourne ton temps d'away en secondes, ensuite comme l'as dit AgoRa_ScripT, il te suffit d'utiliser $duration:
$duration($awaytime)

derniere chose, n'oublie pas que des que tu sort de l'away, les $identifieurs ne retournent plus rien, donc fait toutes les commandes dans lesquelles tu as besoin de ces identifieurs avant de sortir d'away
AgoRa_ScripT Messages postés 136 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 20 octobre 2007
4 nov. 2005 à 22:38
avec $duration()
KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006
4 nov. 2005 à 22:35
Merci beaucoup , j'ai appris beaucoup de choses grace a vous ! FJXOKT , $awaytime retourne juste un nombre, mais je ne sais pas comment faire pour lui faire dire minutes, secondes etc apres ^^
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
4 nov. 2005 à 21:00
je le répète encore une fois:
une fois que on a utilisé la commande /away "message"
1) $away retourne $true (bon ça ok)
2) $awaymsg retourne "message" (le message d'away)
3) $awaytime retourne le temps d'away

en conclusion: les variables %temps et %raison ne servent à rien
AgoRa_ScripT Messages postés 136 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 20 octobre 2007
4 nov. 2005 à 20:07
set %AwNick $did(3) | set %mdp $did(7) | nick %AwNick

même à la limite, je comprend pas pk tu fais une variable et tu fais la commande grace à la variable.. fais direct: nick $did(3)
faus pas avoir peur que $did(3) ne retourne rien, tant que ton dialog est ouvert, il retournera quelque chose. t'as fai ça a kelke moment jcrois.
cette fois c'est bon, j'ai fini. ++
AgoRa_ScripT Messages postés 136 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 20 octobre 2007
4 nov. 2005 à 20:02
dialog Aw {
title "Away"
size -1 -1 377 240
option pixels notheme
box "Away", 1, 1 -2 376 240
text "Pseudo d'Away", 2, 9 21 100 17
edit "", 3, 89 21 100 20
text "Pseudo Normal", 4, 9 52 99 15
edit "", 5, 89 51 100 20
text "Mot de passe", 6, 9 112 100 17
edit "", 7, 90 111 100 20
text "Raison", 8, 9 83 102 17
edit "", 9, 89 83 100 20
box "Choix", 10, 236 28 113 73
radio "Identify Auto", 11, 243 46 87 17
radio "Identify Manuel", 12, 244 75 97 17
button "Partir", 13, 37 158 65 25
button "Revenir", 14, 274 158 65 25
button "Ok", 15, 157 206 65 25, flat ok
}

On *:DIALOG:Aw:*:*:{
if !$away { set %me $me }
if ($devent == sclick) {
if $did == 11 || !$away { set %identify }
if $did == 12 || !$away { unset %identify }
if $did == 13 {
if $away { echo -a Vous etes deja Away | halt }
if !$did(3) || !$did(7) || !$did(9) { $input(Tous les champs ne sont pas remplis,300,Attention) }
else { set %temps $ticks | .away $did(9) | set %Raison $did(9) | set %AwNick $did(3) | set %mdp $did(7) | nick %AwNick | amsg 1Je suis Away ( Raison : %Raison ) | halt }
}
elseif ($did == 14) {
if $away { .away | nick %me | $iif(%identify,msg nickserv identify %mdp) | amsg 1Je suis de Retour Après une Absence de $replace($duration($calc(($ticks - %temps)/1000)) ,wks,Semaines,days,Jours,hrs,Heures,min,Minutes,secs,Secondes) ( Raison : %Raison ) | halt }
else { echo -a Vous etes deja de Retour }
}
}
}
on ^*:OPEN:?:{ if $away { notice $nick Je Suis Absent } }

-

Jlai refais vite fais, au lieu de mettre des variables %AWAY pour savoir si tu es away, utilise $away qui te retourne $true si tu l'es et $false si tu l'es pas...
J'ai raccourci quelques trucs, jai rajouté la raison de l'away lorsque tu fais /away..
Jai changé des trucs, t'en fai cke tu veux.
KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006
4 nov. 2005 à 18:53
Bonjour , j'ai suivis vos conseils , mais j'ai un probleme ! voila mon code :


On *:DIALOG:Aw:*:*:{
if (%Away == OFF) { set %me $me }
if ($devent == sclick) {
if ($did 11) if (%Away OFF) set %identify
elseif ($did 12) if (%Away OFF) unset %identify
elseif ($did = 13) {
if (%Away == OFF) { set %Away ON | set %temps $ticks | .away | set %Raison $did(9) | set %AwNick $did(3) | set %mdp $did(7) | set %identify Msg NickServ identify %mdp | nick %AwNick | amsg 1Je suis Away ( Raison : %Raison ) | halt }
elseif (!$did(3) || !$did(7) || !$did(9)) $input(Tous les champs ne sont pas remplis,300,Attention)
else notice $me Vous etes deja Away
}
elseif ($did == 14) {
if (%Away == ON) { set %Away OFF | .away | nick %me | %identify | amsg 1Je suis de Retour Après une Absence de $replace($duration($calc(($ticks - %temps)/1000)) ,wks, Semaines,days, Jours,hrs, Heures,min, Minutes,secs, Secondes) ( Raison : %Raison ) | %identify | halt }
else { notice $me Vous etes deja de Retour }
}
}
}
on ^*:OPEN:?:{
if (%Away == ON) { notice $nick Je Suis Absent }
}

Le Probleme , c'est que maintenant , le " elseif (!$did(3) || !$did(7) || !$did(9)) $input(Tous les champs ne sont pas remplis,300,Attention) " Ne marche plus :s , quand je laisse les champs vides , ça me met quand meme away . merci de m'aider :)
AgoRa_ScripT Messages postés 136 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 20 octobre 2007
4 nov. 2005 à 15:09
On tfais pas la remarke ke tu n'utilise pas /away, mais que tu ne donne pas de "raison". D'où de belles améliorations qu'il y aurait a faire avec toutes celle qu'on t'as donné..
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
4 nov. 2005 à 13:08
Puis au lieu de mettre "Pseudo normal:" fait en sorte que quand tu y go sa fait /set %me $me
KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006
4 nov. 2005 à 12:50
Mon systeme d'away utilise /away . merci de vos commentaire cela m'aide a m'ameliorer :)
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
3 nov. 2005 à 23:21
Peu d option , dialog moche, pas bien codé, deja vu x fois. 1/10.

Ps : ca vous arrive de lire les regles avant de poster une source ?
AgoRa_ScripT Messages postés 136 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 20 octobre 2007
3 nov. 2005 à 21:43
Mc_Abber vu qu'il ya que sclick autant mettre:

On *:DIALOG:Aw:SCLICK:*:{
if $did == x { }
if $did == x { }
}

comme l'a dit J3rk.

je note pas
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
3 nov. 2005 à 21:00
ça me rappelle un away system (qui a d'ailleurs été effacée il me semble) dans lequel il n'y avais même pas la commande /away (il n'avais donc d'away system que le nom :-)

sinon pour la source j'aurai remplacé le
elseif !$did(3) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(5) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(7) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(9) { $input(Tous les champs ne sont pas remplis,300,Attention) }

par un elseif (!$did(3) || !$did(5) || !$did(7) || !$did(9)) $input(blabla)

dernier truc: les identifieurs $awaymsg et $awaytime sont utiles pour éviter les variables ;-)
COOLMAN002 Messages postés 969 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 1 juillet 2012 1
3 nov. 2005 à 19:28
1er systeme d'away qui n'utilise pas le /away RAISON.
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
3 nov. 2005 à 18:57
Fait plutot

on *:dialog:aw:*:{
if ($devent == sclick) {
if ($did 11) { if (%Away OFF) set %identify }
elseif ($did 12) { if (%Away OFF) unset %identify }
if ($did == 13) {
if (%Away == OFF) { set %Away ON | set %temps $ticks | .away | set %Raison $did(9) | set %AwNick $did(3) | set %NormalNick $did(5) | set %mdp $did(7) | set %identify Msg NickServ identify %mdp | nick %AwNick | amsg 1Je suis Away ( Raison : %Raison ) | halt }
elseif !$did(3) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(5) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(7) { $input(Tous les champs ne sont pas remplis,300,Attention) }
elseif !$did(9) { $input(Tous les champs ne sont pas remplis,300,Attention) }
else { notice $me Vous etes deja Away }
}
elseif ($did == 14) {
if (%Away == ON) { set %Away OFF | .away | nick %NormalNick | %identify | amsg 1Je suis de Retour Après une Absence de $replace($duration($calc(($ticks - %temps)/1000)) ,wks, Semaines,days, Jours,hrs, Heures,min, Minutes,secs, Secondes) ( Raison : %Raison ) | %identify | halt }
else { notice $me Vous etes deja de Retour }
}
}
}

Avec sa, sa fait exactement pareil sauf qu'il est en un seul on dialog ^^
KainKiller Messages postés 21 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 8 août 2006
3 nov. 2005 à 18:48
Ok merci beaucoup de vos conseils j'en prends bien compte :)
cs_J3rK Messages postés 31 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 23 mars 2006
3 nov. 2005 à 14:16
Bon, déjà, la formation du dialog n'est pas terrible: Tes buttons sont trop espacés, les radio, ils peuvent etre remplacer par un combo, ca evite le surchargement du dialog et les box, ca fait un peau plus beau si t'en mettait.

Niveau code maintenant! Arrange toi pour faire des evenements: On *:DIALOG:<dname>:<devent>::{ . C'est ce que tu as fais, c'est bien, mais tu devrais regrouper les event;

On *:DIALOG:Aw:SCLICK:*:{
if ($did 11) if (%Away OFF) set %identify
elseif ($did 12) if (%Away OFF) unset %identify
elseif ($did = 13) {
if (%Away == OFF) { set %Away ON | set %temps $ticks | .away | set %Raison $did(9) | set %AwNick $did(3) | set %NormalNick $did(5) | set %mdp $did(7) | set %identify Msg NickServ identify %mdp | nick %AwNick | amsg 1Je suis Away ( Raison : %Raison ) | halt }
elseif (!$did(3)) $input(Tous les champs ne sont pas remplis,300,Attention)
elseif (!$did(5)) $input(Tous les champs ne sont pas remplis,300,Attention)
elseif (!$did(7)) $input(Tous les champs ne sont pas remplis,300,Attention)
elseif (!$did(9)) $input(Tous les champs ne sont pas remplis,300,Attention)
else notice $me Vous etes deja Away
}
elseif ($did == 14) {
if (%Away == ON) { set %Away OFF | .away | nick %NormalNick | %identify | amsg 1Je suis de Retour Après une Absence de $replace($duration($calc(($ticks - %temps)/1000)) ,wks, Semaines,days, Jours,hrs, Heures,min, Minutes,secs, Secondes) ( Raison : %Raison ) | %identify | halt }
else { notice $me Vous etes deja de Retour }
}
}

Voila, sinon, le dialog a été vu et revu et rerevu une centaine de fois, un de plus, c'est pas grave

Je note pas
Temp_Area Messages postés 110 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 février 2011
3 nov. 2005 à 09:55
Bon ben je ne m'y connais pas énormément en scripting ossi mais...

1. Pourquoi tu a mis "option pixels notheme" dans ton dialog ? ^^ Sa rend un mauvais design je trouve, fin souhate c'est pas grave sa ^^
2. A première vue tu pourrais optimiser les On dialog, et en faire plus qu'un
Pour te faire un petit brifing vite fait :
$dname = Le nom de ton dialog (ici c'est "AW")
$devent = L'evenement que tu veux faire (Ex : Sclic ou init)
$did = l'ID d'un composant de ton dialog (13,14,15 son les boutton de ton dialog)
PS : On *:DIALOG:$dname:$devent:$did:
Donc tu commence par
On *:DIALOG:*:*:*:{
if ($dname == AW) {
if ($devent == sclick) {
if ($did == 11 ) {
if (%Away == OFF) { set %identify
}
}
}
}
Donc suffit de rajouté d'autre if $devent ou $did pour fonctionner les autre boutton ou edit box...

3. Il te manque un On *:dialog:*:init:0:{ ! A chaque fois qu'on relance le dialog, tout ce ré efface

Parcontre je vois pas pourquoi tu met la commande nickserv entière dans une variable ^^ (J'ai pas pu le testé vu que je suis pas sous un reseau avec les service comme toi)
Sinon il manque des truc ^^ (Moi perso un AMSG pour dire que je revien, je ne le ferai pas ^^, puis si tu fait la commande /away pas besoin de faire un On text pour les PV pour prévenir qu'on est away, vu que par defaut le script avertit déja la personne qu'on est away. Parcontre le On open c ok)

Un On LOAD ! tout tes boutton demande un if %away == ... Comme j'ai charger ton script je n'avais pas de variable %away donc rien ne marchai ^^

Fin voila, ok que sa va dans débutant mais du faite qu'il manqué quelque truc vital pour un bon fonctionnement je retire -4
L'optimisation des code -1
Donc 5/10 je trouve que c'est une bonne quote pour le résultat ^^
Améliore toi, je ne suis pas tres pro également mais je pense que tu peu faire mieu facilement, lit quelque tuto sa t'aidera
Rejoignez-nous