Communauté Eggdrop
Fiche - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : Fiche (/showthread.php?tid=1037)



Fiche - Aristide - 21/09/2011

Bonjour,

J'aimerais faire une liste pour retourner les pseudos des animlive dans mon Staff Radio, j'ai réussi à faire le code, mais le soucis c'est que quand j'ajoute un anim çà ne l'écrit pas dans le fichier "listanim.txt".

J'ai essayé de résoudre ce soucis mais je me bloque, je n'ai aucune erreur en party-line.


Merci de votre aide.

Cordialement

TCL
##############################
####    Fiche AnimLive    ####
##############################

##########################
####       Binds      ####
##########################
 
bind pub *|* !listanim show_anims
bind pub *|* !delanim del_anim
bind pub *|* !addanim add_anim

###########
# addanim #
###########
 
proc add_anim { nick host hand channel arg } {
global  vhostniv2 add_anim
 global add_anim salonstaff
 foreach salonst $salonstaff {
  if {[string equal -nocase $salonst $channel]} {
  foreach vhost $vhostniv2 {
  if [string match -nocase $vhost $host]  {
if {$arg == ""} {
    putquick "NOTICE $nick :\00312- \0031Syntax \0036!addanim pseudo \00312-"
    return 0
}
  putquick "cs access #radio add [lindex $arg 0 end] 4"
  putquick "cs access #radio+ add [lindex $arg 0 end] 3"
  putquick "hs set [lindex $arg 0 end] StaffR@AnimLive.***.org"
  putquick "bs say #radio+ !addnews \00312Bienvenu(e) et félicitation à [lindex $arg 0 end] \0036 qui vient de passer AnimLive. \00312 Claap Claaap :P"
  putquick "NOTICE [lindex $arg 0 end] : \00306Félicitation\00312 [lindex $arg 0 end] \0036, tu viens de passer AnimLive. Merci de taper cette commande pour activer ta Vhost: \00312/hs on ."
  putquick "NOTICE $nick \00303OK. \00312 l'accèss \00304Halfop \00312est bien ajouté pour\0036 [lindex $arg 0 end] \00312sur #Radio et #Radio+" 
  putquick "sajoin [lindex $arg 0 end] #radio,#radio+"
      return 0
 
      set user [lindex $arg 0 end]
	set listanim "./Anims/listanim.txt"
        if {[file exists $listanim]} {
		set file [open $listanim "a+"]
        } else {
            set file [open $listanim "w+"]
        }
 
	  set ppost($host) [expr {[unixtime]}]
        puts $file "\00312 $user \00306a été admis dans staff par\00312 $nick \00312Le\00303 [strftime "%d.%m.%Y"]."
        close $file
}
 
###########
# delanim #
###########
 
bind pub - !delanim del_anim
proc del_anim { nick host hand channel arg } {
global  vhostniv2 delanim
 global del_anim salonstaff
 foreach salonst $salonstaff {
  if {[string equal -nocase $salonst $channel]} {
  foreach vhost $vhostniv2 {
  if [string match -nocase $vhost $host]  {
if {$arg == ""} {
    putquick "NOTICE $nick :\00312- \0031Syntax \0036!delanim pseudo \00312-"
    return 0
}
	putquick "sapart [lindex $arg 0 end] #radio,#radio+"
	putquick "cs access #radio del [lindex $arg 0 end]"
	putquick "cs access #radio+ del [lindex $arg 0 end]"
	putquick "hs del [lindex $arg 0 end]"
	putquick "bs say #radio+ !addnews \00304Demission:\0031 [lindex $arg 0 end] \00312a decidé de démissionner de son poste d'AnimLive. Merci a lui."
	putquick "NOTICE [lindex $arg 0 end] : \00312Tu viens de démissioner. Nous te remercions pour tout ce que tu as fait pour witix. Bonne contnuation à toi."
	putquick "NOTICE $nick \00303OK. \00312L'accès de\00306 [lindex $arg 0 end] \00312a été bien retiré sur #Radio et #Radio+"
    return 0
 
	set listanim "./Anims/listanim.txt"
            set theris [file exists [file join ./ temp_listanim.txt]]
            if {$theris != 0} {
                eval "exec rm -f ./temp_post.txt"
            }
            set tempfile [open [file join ./ temp_listanim.txt] "w+"]
            set file [open $listanim "r+"]
            set ln 1
            while {[eof $file] == 0} {
                set line [gets $file]
                set msg $line
                set dele 0
                foreach prm $arg {
                    if {$ln == $prm} {
                        set dele 1
                    }
                }
                if {$dele == 0} {
                    if {$msg != ""} {
                        puts $tempfile "$msg"
                    }
                }
                set dele 0
                set ln [expr {$ln} +1]
            }
            close $tempfile
            close $file
            eval "exec mv -f ./temp_listanim.txt $listanim"
            return 1
        }  
      }
    }
  }
}
}
}
}
}

 
 
 
############
# listanim #
############
 
proc show_anims { nick host hand channel text } {
global  show_anims vhostniv2 salonstaff
 foreach salonst $salonstaff {
  if {[string equal -nocase $salonst $channel]} {
  foreach vhost $vhostniv2 {
  if [string match -nocase $vhost $host]  {
	set listanim "./Anims/listanim.txt"
			foreach vhost $vhostniv2 {
				if {[string match -nocase $vhost $host]}  {
					if {![file exists $listanim]} {
						putquick "NOTICE $nick :-\00312 Aucun AlimLive n'a été enregistré -"
						return 0
					}
					putquick "NOTICE $nick :-\00312 Début de la liste des AnimLive -"
					set data [open $listanim "r"]
					set numlistanim 0
					while {![eof $data]} { 
						gets $data datalistanim
						incr numlistanim
						if { $datalistanim != "" } {
							putquick "NOTICE $nick :-\00301 $numlistanim - $datalistanim"
						}
					}
					if {[eof $data]} {
                              putquick "NOTICE $nick :- \00312Fin de la liste des AnimLive -"
						close $data
					}
				}
			}
		}
	}
}
}
}





RE: Fiche - CrazyCat - 21/09/2011

Hormis le fait que tu aies une ligne qui ne te sert à rien (set ppost($host) [expr {[unixtime]}]), est-ce que le fait d'avoir un return 0 après ton dernier putquick ne te donne pas un indice ?


RE: Fiche - Aristide - 22/09/2011

Bonjour,

@CrazyCat: J'ai retiré la ligne que tu m'avais précisé
TCL
set ppost($host) [expr {[unixtime]}]


mais rien n'est enregistré dans le fichier "listanim.txt" quand je tape !addanim pour ajouter un user. Je ne sais strictement pas d'ou çà vient ce bug.


RE: Fiche - CrazyCat - 22/09/2011

Oui, je t'ai juste dit que cette ligne ne servait à rien. La partie importante, c'est celle en gras: la plupart des return 0 qui sont dans ton script font sortir des procédures au moment inopportun.
De plus tu as une procédure contenue dans une autre.

Voici le code corrigé (vite fait, pas testé):
TCL
##############################
####    Fiche AnimLive    ####
##############################

##########################
####       Binds      ####
##########################
 
bind pub *|* !listanim show_anims
bind pub *|* !delanim del_anim
bind pub *|* !addanim add_anim

###########
# addanim #
###########
 
proc add_anim { nick host hand channel arg } {
    global  vhostniv2 add_anim
    global add_anim salonstaff
    foreach salonst $salonstaff {
        if {[string equal -nocase $salonst $channel]} {
            foreach vhost $vhostniv2 {
                if [string match -nocase $vhost $host]  {
                    if {$arg == ""} {
                        putquick "NOTICE $nick :\00312- \0031Syntax \0036!addanim pseudo \00312-"
                        return 0
                    }
                    putquick "cs access #radio add [lindex $arg 0 end] 4"
                    putquick "cs access #radio+ add [lindex $arg 0 end] 3"
                    putquick "hs set [lindex $arg 0 end] StaffR@AnimLive.***.org"
                    putquick "bs say #radio+ !addnews \00312Bienvenu(e) et félicitation à [lindex $arg 0 end] \0036 qui vient de passer AnimLive. \00312 Claap Claaap :P"
                    putquick "NOTICE [lindex $arg 0 end] : \00306Félicitation\00312 [lindex $arg 0 end] \0036, tu viens de passer AnimLive. Merci de taper cette commande pour activer ta Vhost: \00312/hs on ."
                    putquick "NOTICE $nick \00303OK. \00312 l'accèss \00304Halfop \00312est bien ajouté pour\0036 [lindex $arg 0 end] \00312sur #Radio et #Radio+"
                    putquick "sajoin [lindex $arg 0 end] #radio,#radio+"
 
                    set user [lindex $arg 0 end]
                    set listanim "./Anims/listanim.txt"
                    if {[file exists $listanim]} {
                        set file [open $listanim "a+"]
                    } else {
                        set file [open $listanim "w+"]
                    }
 
                    puts $file "\00312 $user \00306a été admis dans staff par\00312 $nick \00312Le\00303 [strftime "%d.%m.%Y"]."
                    close $file
                }
            }
        }
    }
}
###########
# delanim #
###########
 
bind pub - !delanim del_anim
proc del_anim { nick host hand channel arg } {
    global  vhostniv2 delanim
    global del_anim salonstaff
    foreach salonst $salonstaff {
        if {[string equal -nocase $salonst $channel]} {
            foreach vhost $vhostniv2 {
                if [string match -nocase $vhost $host]  {
                    if {$arg == ""} {
                        putquick "NOTICE $nick :\00312- \0031Syntax \0036!delanim pseudo \00312-"
                        return 0
                    }
                    putquick "sapart [lindex $arg 0 end] #radio,#radio+"
                    putquick "cs access #radio del [lindex $arg 0 end]"
                    putquick "cs access #radio+ del [lindex $arg 0 end]"
                    putquick "hs del [lindex $arg 0 end]"
                    putquick "bs say #radio+ !addnews \00304Demission:\0031 [lindex $arg 0 end] \00312a decidé de démissionner de son poste d'AnimLive. Merci a lui."
                    putquick "NOTICE [lindex $arg 0 end] : \00312Tu viens de démissioner. Nous te remercions pour tout ce que tu as fait pour witix. Bonne contnuation à toi."
                    putquick "NOTICE $nick \00303OK. \00312L'accès de\00306 [lindex $arg 0 end] \00312a été bien retiré sur #Radio et #Radio+"
 
                    set listanim "./Anims/listanim.txt"
                    set theris [file exists [file join ./ temp_listanim.txt]]
                    if {$theris != 0} {
                        eval "exec rm -f ./temp_post.txt"
                    }
                    set tempfile [open [file join ./ temp_listanim.txt] "w+"]
                    set file [open $listanim "r+"]
                    set ln 1
                    while {[eof $file] == 0} {
                        set line [gets $file]
                        set msg $line
                        set dele 0
                        foreach prm $arg {
                            if {$ln == $prm} {
                                set dele 1
                            }
                        }
                        if {$dele == 0} {
                            if {$msg != ""} {
                                puts $tempfile "$msg"
                            }
                        }
                        set dele 0
                        set ln [expr {$ln} +1]
                    }
                    close $tempfile
                    close $file
                    eval "exec mv -f ./temp_listanim.txt $listanim"
                    return 1
                }
            }
        }
    }
}

############
# listanim #
############
 
proc show_anims { nick host hand channel text } {
    global  show_anims vhostniv2 salonstaff
    foreach salonst $salonstaff {
        if {[string equal -nocase $salonst $channel]} {
            foreach vhost $vhostniv2 {
                if [string match -nocase $vhost $host]  {
                    set listanim "./Anims/listanim.txt"
                    foreach vhost $vhostniv2 {
                        if {[string match -nocase $vhost $host]}  {
                            if {![file exists $listanim]} {
                                putquick "NOTICE $nick :-\00312 Aucun AlimLive n'a été enregistré -"
                                return 0
                            }
                            putquick "NOTICE $nick :-\00312 Début de la liste des AnimLive -"
                            set data [open $listanim "r"]
                            set numlistanim 0
                            while {![eof $data]} {
                                gets $data datalistanim
                                incr numlistanim
                                if { $datalistanim != "" } {
                                    putquick "NOTICE $nick :-\00301 $numlistanim - $datalistanim"
                                }
                            }
                            if {[eof $data]} {
                                putquick "NOTICE $nick :- \00312Fin de la liste des AnimLive -"
                                close $data
                            }
                        }
                    }
                }
            }
        }
    }
}