Communauté sur les Eggdrops - Community about Eggdrops
[Script] Petit TCL de gestion - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (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)
+--- Thread: [Script] Petit TCL de gestion (/showthread.php?tid=1510)

Pages: 1 2 3 4 5 6 7


RE: Petit TCL de gestion - CrazyCat - 26/03/2014

(26/03/2014, 15:07)aliasangelius Wrote: Ta le sens de l'humeur, mais ont peut aussi dire que /map c'est équivalent à /links..
On dit "de l'humour".
Et non, /map et /links ne sont pas équivalent, surtout dans le cas actuel où le lien ne s'établit pas.
/map n'affiche que ce qui est actuellement connecté. Ce n'est en aucun cas un moyen de vérifier la présence d'un bloc "link" dans la conf.

(26/03/2014, 15:07)aliasangelius Wrote: Façon les server irc Unreal sa reste de la merde en étant polis.
Le mieux et les ircu.
Jugement personnel et ne s'appuyant sur rien de qualitatif ou quantitatif. On va dire que je n'ai pas lu.


RE: Petit TCL de gestion - BaGrift - 26/03/2014

Sujet Resolu :)

Un grd merci a aliasangelius pour m'avoir aidé pour ce code et un grd merci aussi a CrazyCat pour avoir trouvé la solution au probleme de link.. :p

Voicis le code corrigé :)

Code:

tcl
#*************************************************#
# Système de sockets pour le réseaux Aurel-Tchat. #
# Fait par alias_angelius avec BaGrift.          #
#*************************************************#
 
namespace eval ::socks {
   variable aurore
 
#********************#
# Service.Socket 1.0 #
#********************#
 
#**************************#
# Information link reseau. #
#**************************#
 
set aurore(serv) "Socket.*******.fr"
set aurore(ip) "IP"
set aurore(port) "PORT"
set aurore(pwdlink) "********"
set aurore(info) "Aurore Services"
 
#****************************#
# Configuration des sockets. #
#****************************#
 
set aurore(nick) "Aurore"
set aurore(identd) "Aurore"
set aurore(host) "Aurore.********.fr"
set aurore(nom) "Aurore Service Moderation"
 
#***************************#
# Salon de log des sockets. #
#***************************#
 
set aurore(log) "#Anonymes"
set aurore(salon) "#Accueil"
set aurore(staff) "#Staff"
set aurore(quit01) "Redemarage Aurore-Service."
set aurore(quit02) "Fermeture Aurore-Service."
 
#****************************************#
# Lancement de la procédure des sockets. #
#****************************************#
 
proc checkconnect {} {
   if {![info exists aurore(idx)]} { utimer 30 [namespace current]::checkconnect } else { xconnect:serv }
}
 
proc xconnect:serv {} {
   variable aurore
   if [catch {set aurore(idx) [connect $aurore(ip) $aurore(port)]} err] {
      putlog "Connection error :$err"
      return
   }
   putdcc $aurore(idx) "PASS $aurore(pwdlink)"
   putdcc $aurore(idx) "SERVER $aurore(serv) [unixtime] :$aurore(info)"
   putdcc $aurore(idx) ":$aurore(serv) NICK $aurore(nick) '' '' $aurore(identd) $aurore(host) $aurore(serv) '' :$aurore(nom)"
   putdcc $aurore(idx) ":$aurore(nick) MODE $aurore(nick) +oOSqsw"
   putdcc $aurore(idx) ":$aurore(nick) JOIN $aurore(log)"
   putdcc $aurore(idx) ":$aurore(nick) JOIN $aurore(salon)"
   putdcc $aurore(idx) ":$aurore(nick) MODE $aurore(log) +ntsv $aurore(nick)"
   control $aurore(idx) [namespace current]::controling_server
   utimer 10 [namespace current]::verify
}
 
#***********************************#
# Verify si le serveur est Connecté #
#***********************************#
 
proc verify {} {
   variable aurore
   if [valididx [set [namespace current]::aurore(idx)]] {
      utimer 30 [namespace current]::verify
   } else {
      xconnect:serv
   }
}
 
proc controling_server {idx arg} {
   variable aurore
   set arg1 [lindex [split $arg " "] 0]
   set arg2 [lindex [split $arg " "] 1]
   set arg3 [lindex [split $arg " "] 2]
   set arg4 [lindex [split $arg " "] 3]
   set arg5 [lindex [split $arg " "] 4]
   set arg6 [lindex [split $arg " "] 5]
   set arg7 [lindex [split $arg " "] 6]
   set arg8 [lindex [split $arg " "] 7]
   set arg10 [string trim [lrange [split $arg " "] 3 end] :]
   if {$arg2=="PING"} {
      putdcc $aurore(idx) ":$aurore(serv) PONG $aurore(ip) :$aurore(serv)"
    }   
}
 
#**********************#
# Restart des sockets. #
#**********************#
 
bind evnt - prerestart [namespace current]::eva:restart
proc eva:restart {args} {
   variable aurore
   putdcc $aurore(idx) ":$aurore(serv) SQUIT $aurore(serv) :Restart Sockets."
   catch {close $aurore(idx)}
}
 
#********************#
# Rehash du Service. #
#********************#
 
bind dcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nick idx arg} {
   variable aurore
   putdcc $idx "\002Rehash de Aurore-Service et des fichiers\002"
   utimer 4 rehash
}
 
#*********************#
# Restart du Service. #
#*********************#
 
bind dcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nick idx arg} {
   variable aurore
   putdcc $idx "\002Redémarrage de Laura-service\002"
   if [valididx [set [namespace current]::aurore(idx)]] {
      putdcc $aurore(idx) ":$aurore(nick) QUIT :$aurore(quit01)"
      putdcc $aurore(idx) ":$aurore(serv) SQUIT :$aurore(serv)"
      catch {close $aurore(idx)}
      foreach kill [utimers] {
          if {[lindex $kill 1]=="[namespace current]::verify"} { killutimer [lindex $kill 2] }
      }
    }
    xconnect:serv
}
 
#*****************#
# Die du Service. #
#*****************#
 
bind dcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nick idx arg} {
   variable aurore
    putdcc $idx "\002Arrêt de Aurore-Service\002"
    if [valididx [set [namespace current]::aurore(idx)]] {
       putdcc $aurore(idx) ":$aurore(nick) QUIT : $aurore(quit02)"
       putdcc $aurore(idx) ":$aurore(serv) SQUIT :$aurore(quit02)"
       catch {close $aurore(idx)}
       foreach kill [utimers] {
          if {[lindex $kill 1]=="[namespace current]::verify"} { killutimer [lindex $kill 2] }
       }
   }
}
 
#**********************#
# Xvoice pour anim      #
#**********************#
 
bind pub n "!xvoice" [namespace current]::xvoice
proc xvoice { nick handle uhost chan text } {
   variable aurore
   putdcc $aurore(idx) ":$aurore(nick) MODE $chan +v $nick"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Bonne Moderation !"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Pour savoir mais commandes de modération tape !modere"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Pence Bien a te devoice quand tu anim plus ! => !xdevoice Merci"
   putquick "SAJOIN $nick $aurore(staff)"
}
 
#********************#
# Xdevoice pour anim #
#********************#
 
bind pub n "!xdevoice" [namespace current]::xdevoice
proc xdevoice { nick handle uhost chan text } {
   variable aurore
   putdcc $aurore(idx) ":$aurore(nick) MODE $chan -v $nick"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Merci d'avoir animé $nick"
}
 
#**************#
# Kick Pseudo. #
#**************#
 
bind pub n "!kick" [namespace current]::kick
proc kick { nick hand host chan arg } {
   variable aurore
   set nick [lindex $arg 0]
   putdcc $aurore(idx) ":$aurore(nick) KICK $chan $nick Merci de rester calme !"
   return 0
}
 
#*************#
# Ban Pseudo. #
#*************#
 
bind pub n "!kb" pub:kb
proc pub:kb { nick hand host chan arg } {
   variable aurore
    # Ici j'ai changer ton set, pour split sur un host.
   set nik [lindex [split $nick !] 0]
    # Ici je re split sur l'host.
   set host [lindex [split $nick !] 1]
    # Ici je re set arg, au cas ou plus tard faudra faire une modification.
   set arg [lindex [split $args] 1 end]
    # Maintenant ont ban sur le nick et le host.
   putdcc $aurore(idx) ":$aurore(nick) $chan +b $nik!$host"
   putdcc $aurore(idx) ":$aurore(nick) KICK $chan $nick Reste Cool Banni !"
}
 
#**************#
# Appel Ircop. #
#**************#
 
bind pub n "!appel" [namespace current]::appel
proc appel { nick uhost handle chan arg } {
   variable aurore
   putdcc $aurore(idx) ":$aurore(nick) PRIVMSG $aurore(log) $nick Appel un IRCop sur $chan"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Les IRCops on ete appelé"
}
 
#****************#
# Help Commande. #
#****************#
 
bind pub X "!modere" [namespace current]::help
proc help { nick uhost handle chan arg } {
   variable aurore
   set commande [lindex $arg 1]
   set commande [stripcodes abcu [lindex $arg 0]]
   if {$commande == ""} {
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\00314Commande Help du Robot \002\0034$::botnick\002\0034"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\017"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!xvoice\0034 \0031a utilisé que quand vous moderé sous peine de sanction!\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!xdevoice\0034 \0031a faire quand vous avez fini de moderé !\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!kick\0034 \0031sert a kické un user du salon !\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!kb\0034 \0031Sert a kick/ban un user du salon !\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!appel\0034 \0031sert a appelé les IRCop en cas de grosse perturbation sur le salon !\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\0034!chut\0034 \0031sert a coupé la parole a un user pendant 3minute !\0031"
      putdcc $aurore(idx) ":$aurore(nick) privmsg $nick :\00314Fin Help du Robot \002\0034$::botnick\002\0034"
   }
}
 
#****************************#
# Fin du Service Sockets 1.0 #
#****************************#
# connection 
[namespace current]::xconnect:serv
}
 
putlog "\0031Service Sockets 1.0 \0034Chargé."




RE: Petit TCL de gestion - Pia - 26/03/2014

C'était bien la peine de tout corriger pour refaire toutes les fautes dans le script final oO


RE: Petit TCL de gestion - aliasangelius - 26/03/2014

Suis pas d'humeur la, mais bon je corrigerai encore demain.

Après, je ferais une dernière chose, Puis sa sera terminé pour ma part dans ce qui et du codage.
Désoler mais mon état de santé me le permetra plus par la suite.

Donc dans la semaine j'enchaine pour sa très vite, pour que par la suite tu puisse voir et tant sortir.
Demain je corrige les fautes, je change le système je le passe en msgcat, puis ont verra ce que sa donne :)


RE: Petit TCL de gestion - BaGrift - 26/03/2014

Prend toii pas la tete alias laisse tomber le code restera comme il et tempis le plus important c qui fontionne maintenant merci encore a toi pour tout :)


RE: Petit TCL de gestion - aliasangelius - 27/03/2014

Non Non.. La tu va voir comment fonctionne vraiment les sockets, ce qui sera intéresant :)
Je pense te mettre un truc en plus mais ont en re parlera.


RE: Petit TCL de gestion - BaGrift - 27/03/2014

Pas de soucis c'est un plaisir d'apprendre avec toi :)


RE: Petit TCL de gestion - aliasangelius - 10/04/2014

Salut,

Alors je relance le sujet, pour continuer.
Je suis navré pour le retard pour la continuation.. Mais je n'es pas pu plus tôt.

Donc voici le code que je vais te montrer pour comment faire pour commander une socket.
Ceci reste de l'exemple, je vais te faire voir, mais sa sera à toi de possitionner ceci..
Si tu as des difficulté que tu ne comprend pas ou que tu n'y arrive pas, dit le moi.
Ou voir même des questions il n'y a aucun soucis je serait la pour t'aider.

Dans la partie "controling_server", du code rajoute ceci :


tcl
set event [lindex $arg 1]


Si ceci tu ne comprend attend de voir la suite, et si malgré tout tu ne comprend pas hésite pas.
Maintenant ont va rajouter ceci dedans aussi :


tcl
set pseudo [string trim $arg1 :]


Nous mettons sa aussi :


tcl
set commande [string trim [lindex $arg 3] :]
set destinataire [lindex $arg 2]

Maintenant, Nous allons faire en sorte que lorsqu'on envoie un message à une socket elle répond.
Pour celà nous utilisons "privmsg", mais de façon différente.
Voici un exemple de code.


tcl
if {$event=="PRIVMSG"} {
      if {$destinataire=="$aurore(nick)"} {
         if {$commande=="VERSION"} {
            putdcc $aurore(idx) ":$aurore(nick) NOTICE $pseudo :\037\034aurore1.0 Pour le Réseau blabla..\037\0034"
            putdcc $aurore(idx) ":$aurore(nick) PRIVMSG $aurore(log) :\0031\[\0034Chan-Log\0031\0031]\0031 \037\00314Commande Version par\037\00314 \037\0034$pseudo\037\0034"
         }
      }


Voilà un exemple, surtout ne le rajoute pas dans ton code pour le lancer.. là ce n'es qu'un exemple, pour que tu me dise si tu comprend ou pas.
Juste pour que tu sache comment faire, par la suite nous feront en sorte de mettre en place le tout.
Mais pour le moment nous allons appliquer des exemple, pour permettre la compréhension.


RE: Petit TCL de gestion - BaGrift - 12/04/2014

Salut Alias, je comprend bien le fonctionnement de ton exemple je ferais quelle que test moi même demain dans la journée pour voir si jai bien comprie le fonctionnement


RE: Petit TCL de gestion - aliasangelius - 13/04/2014

Salut, Je crois que ta pas lus tout ce que j'ai dit..

aliasangelius Wrote:Voilà un exemple, surtout ne le rajoute pas dans ton code pour le lancer.. là ce n'es qu'un exemple, pour que tu me dise si tu comprend ou pas.
Juste pour que tu sache comment faire, par la suite nous feront en sorte de mettre en place le tout.
Mais pour le moment nous allons appliquer des exemple, pour permettre la compréhension.

Pourquoi tu veut le rajouter, alors que je te dit de pas le faire . :°
Là ont part juste sur des exemple, pour tu comprenne certaines choses.
Pas pour le mettre en place encore, car y'a certaines choses à comprendre avant tout..


RE: Petit TCL de gestion - BaGrift - 15/04/2014

Salut :)

Salut je tes pas dit que j'allais mètre bêtement ton exemple mais juste essayé de faire qu'elle que test lol ;)


RE: Petit TCL de gestion - aliasangelius - 15/04/2014

Salut,

Ah j'avais mal compris dsl lol..
Donc, essaye de mettre tout les exemples que j'ai mis, dans le code.
Et montre moi comment tu positionne Le tout.
Et si ta des questions dit le hein..

Et ensuite ont va corser le tout :)


RE: Petit TCL de gestion - BaGrift - 17/04/2014

Salut, :)

Donc si je suis pas blond et que je comprend bien sa donnerais ca ? ;)

Code:


tcl
proc controling_server {idx arg} {
   variable aurore
   set arg1 [lindex [split $arg " "] 0]
   set arg2 [lindex [split $arg " "] 1]
   set arg3 [lindex [split $arg " "] 2]
   set arg4 [lindex [split $arg " "] 3]
   set arg5 [lindex [split $arg " "] 4]
   set arg6 [lindex [split $arg " "] 5]
   set arg7 [lindex [split $arg " "] 6]
   set arg8 [lindex [split $arg " "] 7]
   set arg10 [string trim [lrange [split $arg " "] 3 end] :]
   set event [lindex $arg 1]
   set pseudo [string trim $arg1 :]
   set commande [string trim [lindex $arg 3] :]
   set destinataire [lindex $arg 2]
   if {$arg2=="PING"} {
      putdcc $aurore(idx) ":$aurore(serv) PONG $aurore(ip) :$aurore(serv)"
    }   
}
 
#***********************#
# Reponce de la sockets #
#***********************#
 
if {$event=="PRIVMSG"} {
      if {$destinataire=="$aurore(nick)"} {
         if {$commande=="VERSION"} {
            putdcc $aurore(idx) ":$aurore(nick) NOTICE $pseudo :\037\034aurore1.0 Pour le Réseau blabla..\037\0034"
            putdcc $aurore(idx) ":$aurore(nick) PRIVMSG $aurore(log) :\0031\[\0034Chan-Log\0031\0031]\0031 \037\00314Commande Version par\037\00314 \037\0034$pseudo\037\0034"
         }
      }


Bon oui j'ai copié bêtement mais c'est pour voir si j'ai bien compris le fonctionnement :)


RE: Petit TCL de gestion - aliasangelius - 17/04/2014

Salut,

Donc oui sa donnerais exactement ça.
Donc là en faite $aurore(nick) Ont va dire c'est = à "Socket1", Donc là nous avons ce morceau de code :


tcl
if {$commande=="VERSION"} {


Ceci c'est si tu fait par exemple :
Quote:/msg Socket1 version

La socket va te répondre en notice le message suivant qui et dit dans le code en bas ici :

tcl
putdcc $aurore(idx) ":$aurore(nick) NOTICE $pseudo :\037\034aurore1.0 Pour le Réseau blabla..\037\0034"


Tu comprend le principe ou pas ?
Si tu le comprend, maintenant reprend ton code de base, tu as ceci dedans :


tcl
bind pub n "!xvoice" [namespace current]::xvoice
proc xvoice { nick handle uhost chan text } {
   variable aurore
   putdcc $aurore(idx) ":$aurore(nick) MODE $chan +v $nick"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Bonne Moderation !"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Pour savoir mais commandes de modération tape !modere"
   putdcc $aurore(idx) ":$aurore(nick) NOTICE $nick Pence Bien a te devoice quand tu anim plus ! => !xdevoice Merci"
   putquick "SAJOIN $nick $aurore(staff)"
}


Là sa va être plus compliquer je pense mais essaye je veut tu comprenne un truc très intéressant.;, La sa commence à devenir vraiment très sympa de ce que l'ont va faire !!
Alors à t'es doigts, et montre moi comment tu mettrais ce morceau de code en utilisant le système de socket.

Et si jamais tu n'a pas compris certaines chose ou autres, dit le moi :).
Et même si tu n'y arrive pas tu dit juste tu comprend pas, et pourquoi.
Exemple : "Je sais pas comment faire je pige pas trop", Ben moi je vais te guider de comment faire en faisant des commentaire sur certaines choses.


RE: Petit TCL de gestion - MenzAgitat - 17/04/2014

 

tcl
set arg1 [lindex [split $arg " "] 0]
   set arg2 [lindex [split $arg " "] 1]
   set arg3 [lindex [split $arg " "] 2]
   set arg4 [lindex [split $arg " "] 3]
   set arg5 [lindex [split $arg " "] 4]
   set arg6 [lindex [split $arg " "] 5]
   set arg7 [lindex [split $arg " "] 6]
   set arg8 [lindex [split $arg " "] 7]


   =


tcl
lassign $arg arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8