begin process at 2008 08 29 06:38:38
1 233 517 membres
56 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN BOT XDCC EN MIRC


Information sur la source

Catégorie :Bots Classé sous : bot, xdcc, transfert, packet Niveau : Débutant Date de création : 21/08/2005 Date de mise à jour : 23/08/2005 00:00:24 Vu / téléchargé: 13 812 / 869

Note :
8,91 / 10 - par 11 personnes
8,91 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

Bon voila c'est mon tout premier code en irc, il permet d'etre soi meme un bot xdcc qui reagit aux commandes xdcc list, send #pack, remove , donc pour le faire marcher il faut creer un fichier c:\program files\mirc\xdcc.mrc et taper /load -rs xdcc.mrc ds une fenetre qqconque
donc tout n'est pas parametrable (le nb de slot et la liste d'attente) mais j'attend toutes vos suggestions pour pouvoir ameliorer mon code

Source

  • on *:LOAD:{ echo Script Loaded!
  • write -c pack.txt
  • dialog -md xdcc_ xdcc_
  • }
  • ;=================================================================================
  • menu channel,menubar {
  • XDCC bot
  • .gestion du xdcc:dialog -md xdcc_ xdcc_
  • }
  • ;=================================================================================
  • On *:CONNECT: { write -c list.txt }
  • On *:TEXT:!list:*:{
  • notice $nick $me (XDCC) 2 slots d'envoie, liste d'attente de max 10 personnes, $lines(pack.txt) fichiers partagés
  • }
  • On *:TEXT:*xdcc*:?:{
  • if ( $2 == list ) { listpack $nick }
  • elseif ( $2 == send ) {
  • if ( $3 <= $lines(pack.txt) ) addtoqueu $nick $3
  • else notice $nick pack non existant
  • }
  • elseif ( $2 == remove ) { remfrqueu $nick }
  • }
  • On *:SENDFAIL:*: {
  • var %lign = 1, %nblines = $lines(list.txt)
  • while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,32) != $nick ) {
  • inc %lign
  • }
  • if ( %lign <= %nblines ) {
  • notice $nick transfert de $deltok($read(pack.txt,$gettok($read(list.txt,%lign),2,32),1,124) interrompu ... dsl :(
  • write -dl %lign list.txt
  • dcc send $gettok($read(list.txt,2),1,124)) $gettok($read(pack.txt,$gettok($read(list.txt,2),2,32))),1,124)
  • }
  • }
  • on *:FILESENT:*: {
  • var %lign = 1, %nblines = $lines(list.txt)
  • while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,32) != $nick ) {
  • inc %lign
  • }
  • if ( %lign <= %nblines ) {
  • notice $nick transfert de $deltok($read(pack.txt,$gettok($read(list.txt,%lign),2,32)),1,124) accompli
  • write -dl %lign list.txt
  • dcc send $gettok($read(list.txt,2),1,124)) $gettok($read(pack.txt,$gettok($read(list.txt,2),2,32))),1,124)
  • }
  • }
  • alias listpack {
  • var %lign = 1, %nblines = $lines(pack.txt)
  • notice $1 anime-team's XDCC, 2 slot d'envoie , liste d'attentes $calc( 12 - $lines(pack.txt) )/12
  • notice $1 pour avoir un pack, tapez /msg $me xdcc send numero_du_pack
  • while ( %lign <= %nblines ) {
  • notice $1 pack %lign : $deltok($read(pack.txt,%lign),1,124)
  • inc %lign
  • }
  • notice $1 %nblines fichiers partagés
  • }
  • alias addtoqueu {
  • if ( $lines(list.txt) < 12 ) {
  • if ( $read(list.txt, w, $1) != $1 ) {
  • write list.txt $1 $2
  • notice $1 vouz avez été ajouté en position $lines(list.txt)
  • if ( $lines(list.txt) < 3 ) {
  • notice $1 envoi du pack : $deltok($read(pack.txt,$2),1,124)
  • dcc send $1 $gettok($read(pack.txt,$2),1,124)
  • }
  • }
  • else { notice $1 vous ete deja present dans la liste d'attente }
  • }
  • else { notice $1 liste pleine }
  • }
  • alias remfrqueu {
  • var %lign = 1, %nblines = $lines(list.txt)
  • while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,124) != $1 ) {
  • inc %lign
  • }
  • if ( %lign <= %nblines ) {
  • write -dl %lign list.txt
  • notice $1 vous avez bien été enlevé de la liste d'attente :)
  • }
  • else { notice $1 dsl zetes pas dans la liste d'attente :( }
  • }
  • ;========================================================================================
  • dialog xdcc_ {
  • title "Xdcc"
  • size -1 -1 412 129
  • option dbu
  • button "Ajouter un fichier", 2, 334 11 65 15
  • list 1, 9 11 312 105, size
  • box "Gestion de votre Xdcc", 7, 3 4 405 116
  • button "Supprimer un fichier", 3, 334 32 65 15
  • button "Move Up", 5, 334 75 65 15
  • button "Modifier une description", 4, 334 53 65 15
  • button "Move Down", 6, 334 97 65 15
  • }
  • On *:DIALOG:xdcc_:*:*: {
  • if ( $devent == init ) {
  • var %lign = 1, %nblines = $lines(pack.txt)
  • while ( %lign <= %nblines ) {
  • did -a xdcc_ 1 $read(pack.txt,%lign)
  • inc %lign
  • }
  • }
  • elseif ( $devent == sclick ) {
  • if ( $did == 2 ) {
  • var %nam = $sfile(C:\,Ajouter un fichier,Ajouter)
  • if ( %nam ) {
  • write pack.txt %nam
  • did -a xdcc_ 1 %nam
  • }
  • }
  • elseif ( $did == 3 ) {
  • if ( $did(1).sel ) {
  • write -dl $did(1).sel pack.txt
  • did -d xdcc_ 1 $did(1).sel
  • }
  • }
  • elseif ( $did == 4 ) {
  • if ( $did(1).sel ) {
  • var %temp = $read(pack.txt,$gettok($did(1).sel,1,124))
  • write -l $did(1).sel pack.txt $+(%temp,|,$?=" $+(entrez une description pour le fichier,$chr(32),%temp) ")
  • did -o xdcc_ 1 $did(1).sel $read(pack.txt,$did(1).sel)
  • }
  • }
  • elseif ( $did == 5 ) {
  • if ( $did(1).sel ) {
  • if ( $calc( $did(1).sel - 1 ) > 0 ) {
  • var %temp = $read(pack.txt,$did(1).sel) , %did_ = $did(1).sel , %didm_ = $calc( $did(1).sel - 1 )
  • did -o xdcc_ 1 %didm_ %temp
  • did -o xdcc_ 1 %did_ $read(pack.txt,%didm_)
  • write -l %did_ pack.txt $read(pack.txt,%didm_)
  • write -l %didm_ pack.txt %temp
  • }
  • }
  • }
  • elseif ( $did == 6 ) {
  • if ( $did(1).sel ) {
  • if ( $calc( $did(1).sel + 1 ) <= $lines(pack.txt) ) {
  • var %temp = $read(pack.txt,$did(1).sel) , %did_ = $did(1).sel , %didm_ = $calc( $did(1).sel + 1 )
  • did -o xdcc_ 1 %didm_ %temp
  • did -o xdcc_ 1 %did_ $read(pack.txt,%didm_)
  • write -l %did_ pack.txt $read(pack.txt,%didm_)
  • write -l %didm_ pack.txt %temp
  • }
  • }
  • }
  • }
  • }
on *:LOAD:{ echo Script Loaded! 
write -c pack.txt
dialog -md xdcc_ xdcc_
}
;=================================================================================
menu channel,menubar {
  XDCC bot
  .gestion du xdcc:dialog -md xdcc_ xdcc_
}
;=================================================================================
On *:CONNECT: { write -c list.txt } 

On *:TEXT:!list:*:{
notice $nick $me (XDCC) 2 slots d'envoie, liste d'attente de max 10 personnes, $lines(pack.txt) fichiers partagés
}

On *:TEXT:*xdcc*:?:{ 
  if ( $2 == list ) { listpack $nick } 
  elseif ( $2 == send ) { 
    if ( $3 <= $lines(pack.txt) ) addtoqueu $nick $3 
    else notice $nick pack non existant 
  } 
  elseif ( $2 == remove ) { remfrqueu $nick } 
} 

On *:SENDFAIL:*: { 
  var %lign = 1, %nblines = $lines(list.txt) 
  while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,32) != $nick ) { 
    inc %lign 
  } 
  if ( %lign <= %nblines ) { 
    notice $nick transfert de $deltok($read(pack.txt,$gettok($read(list.txt,%lign),2,32),1,124) interrompu ... dsl :( 
    write -dl %lign list.txt 
    dcc send $gettok($read(list.txt,2),1,124)) $gettok($read(pack.txt,$gettok($read(list.txt,2),2,32))),1,124) 
  } 
} 

on *:FILESENT:*: { 
  var %lign = 1, %nblines = $lines(list.txt) 
  while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,32) != $nick ) { 
    inc %lign 
  } 
  if ( %lign <= %nblines ) { 
    notice $nick transfert de $deltok($read(pack.txt,$gettok($read(list.txt,%lign),2,32)),1,124) accompli 
    write -dl %lign list.txt 
    dcc send $gettok($read(list.txt,2),1,124)) $gettok($read(pack.txt,$gettok($read(list.txt,2),2,32))),1,124) 
  } 
} 

alias listpack { 
  var %lign = 1, %nblines = $lines(pack.txt) 
  notice $1 anime-team's XDCC, 2 slot d'envoie , liste d'attentes $calc( 12 - $lines(pack.txt) )/12
  notice $1 pour avoir un pack, tapez /msg $me xdcc send numero_du_pack 
  while ( %lign <= %nblines ) { 
    notice $1 pack %lign : $deltok($read(pack.txt,%lign),1,124) 
    inc %lign 
  } 
  notice $1 %nblines fichiers partagés 
} 

alias addtoqueu { 
  if ( $lines(list.txt) < 12 ) { 
    if ( $read(list.txt, w, $1) != $1 ) { 
      write list.txt $1 $2 
      notice $1 vouz avez été ajouté en position $lines(list.txt) 
      if ( $lines(list.txt) < 3 ) { 
        notice $1 envoi du pack : $deltok($read(pack.txt,$2),1,124) 
        dcc send $1 $gettok($read(pack.txt,$2),1,124) 
      } 
    } 
    else { notice $1 vous ete deja present dans la liste d'attente } 
  } 
  else { notice $1 liste pleine } 
} 


alias remfrqueu { 
  var %lign = 1, %nblines = $lines(list.txt) 
  while ( %lign <= %nblines && $gettok($read(list.txt,%lign),1,124) != $1 ) { 
    inc %lign 
  } 
  if ( %lign <= %nblines ) { 
    write -dl %lign list.txt 
    notice $1 vous avez bien été enlevé de la liste d'attente :) 
  } 
  else { notice $1 dsl zetes pas dans la liste d'attente :( } 
} 

;======================================================================================== 
dialog xdcc_ { 
  title "Xdcc" 
  size -1 -1 412 129 
  option dbu 
  button "Ajouter un fichier", 2, 334 11 65 15 
  list 1, 9 11 312 105, size 
  box "Gestion de votre Xdcc", 7, 3 4 405 116 
  button "Supprimer un fichier", 3, 334 32 65 15 
  button "Move Up", 5, 334 75 65 15 
  button "Modifier une description", 4, 334 53 65 15 
  button "Move Down", 6, 334 97 65 15 
} 

On *:DIALOG:xdcc_:*:*: { 
  if ( $devent == init ) { 
    var %lign = 1, %nblines = $lines(pack.txt) 
    while ( %lign <= %nblines ) { 
      did -a xdcc_ 1 $read(pack.txt,%lign) 
      inc %lign 
    } 
  } 
  elseif ( $devent == sclick ) { 
    if ( $did == 2 ) { 
      var %nam = $sfile(C:\,Ajouter un fichier,Ajouter) 
      if ( %nam ) { 
        write pack.txt %nam 
        did -a xdcc_ 1 %nam 
      } 
    } 
    elseif ( $did == 3 ) { 
      if ( $did(1).sel ) { 
        write -dl $did(1).sel pack.txt 
        did -d xdcc_ 1 $did(1).sel 
      } 
    } 
    elseif ( $did == 4 ) { 
      if ( $did(1).sel ) { 
        var %temp = $read(pack.txt,$gettok($did(1).sel,1,124)) 
        write -l $did(1).sel pack.txt $+(%temp,|,$?=" $+(entrez une description pour le fichier,$chr(32),%temp) ") 
        did -o xdcc_ 1 $did(1).sel $read(pack.txt,$did(1).sel) 
      } 
    } 
    elseif ( $did == 5 ) { 
      if ( $did(1).sel ) { 
        if ( $calc( $did(1).sel - 1 ) > 0 ) { 
          var %temp = $read(pack.txt,$did(1).sel) , %did_ = $did(1).sel , %didm_ = $calc( $did(1).sel - 1 ) 
          did -o xdcc_ 1 %didm_ %temp 
          did -o xdcc_ 1 %did_ $read(pack.txt,%didm_) 
          write -l %did_ pack.txt $read(pack.txt,%didm_) 
          write -l %didm_ pack.txt %temp 
        } 
      } 
    } 
    elseif ( $did == 6 ) { 
      if ( $did(1).sel ) { 
        if ( $calc( $did(1).sel + 1 ) <= $lines(pack.txt) ) { 
          var %temp = $read(pack.txt,$did(1).sel) , %did_ = $did(1).sel , %didm_ = $calc( $did(1).sel + 1 ) 
          did -o xdcc_ 1 %didm_ %temp 
          did -o xdcc_ 1 %did_ $read(pack.txt,%didm_) 
          write -l %did_ pack.txt $read(pack.txt,%didm_) 
          write -l %didm_ pack.txt %temp 
        } 
      } 
    } 
  } 
}

Conclusion

donc y'a pê des erreurs etc et j'attend vraiment vraiment vraiment vraiment impatiemment toutes vos suggestions pour l'ameliorer , l'optimiser etc ...
merci infiniment pour tout vos commentaires !
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

21 août 2005 17:15:38 :
eu j'av oublié un truc lol dsl
21 août 2005 18:37:08 :
code eclairci variable locale ds certain remote
21 août 2005 18:54:16 :
remplacement des variables inutiles par des arguments pour fonction
21 août 2005 21:22:03 :
des optimisations ds les boucles
22 août 2005 20:19:33 :
ajout d'un dialogue pour parametrer les fichiers partagées !
22 août 2005 22:10:42 :
correction de bugs / mise sous forme *.mrc / ajout d'un zip & d'un apercu
23 août 2005 00:00:24 :
rajout du !list
  • signaler à un administrateur
    Commentaire de COOLMAN002 le 21/08/2005 17:20:39

    Pk tu SET avant de faire une while ? un VAR est mieux...

    Tu dis qui faut créer un fichier.. pk tu le ferais pas via un event ON LOAD ?

    Dans ton event ON TEXT, tu utilises "%nam" mais, pk tu mets pas directement "$nick" après l'alias, et dans l'alias tu renvois le "$nick" via "$1"

    (Exemple:
      if ( $2 == list ) { listpack $nick }
    ..
      notice $1 anime-team's XDCC, 2 slot d'envoie , max liste d'attente = 10 personnes
    )

    Idem pour ton "%pack"

    Ton code est pas très clair (N'hésite pas à retourner a la ligne pour que se soit plus lisible)

    Perso j'aime pas ça :\ Je note pas.

  • signaler à un administrateur
    Commentaire de roomsmush le 21/08/2005 18:55:17

    voila g fait tout comme t'as dit ...
    c mieu ?

  • signaler à un administrateur
    Commentaire de COOLMAN002 le 21/08/2005 19:16:16

    Oui c'est mieux :)

    Dan ton evenement ON TEXT, (send) faudrais que tu vérifies si "$3" existe.

    Pour tes whiles, faut pas mettre d'identifieur ($machin) dedans..
       var %lign = 1
       while ( %lign <= $lines(list.txt)..

    <devient>

    var %lign = 1, %lign2 =  $lines(list.txt)
    whil %lign <= %lign2 ...


    Tes alias, tu peux les mettre en local (alias -l <Nom de l'alias>).

  • signaler à un administrateur
    Commentaire de roomsmush le 22/08/2005 20:22:50

    maieuu qui c qui m'as mis un 1 ? ...
    bon voila g rajouté un dialogue pour parametrer les fichiers partagées ... pfiou ct cho kan mm

    ...
    bon sinon y'a personne qui peut me dire ce que je pourrais optimiser d'autres ?
    ou bien si qqun l'a testé , si y'a des bugs ou autres !!
    merci infiniment d'avance !!

  • signaler à un administrateur
    Commentaire de kickeur le 26/08/2005 16:13:28

    comment on s'en sert ? les commandes sont ... ?

  • signaler à un administrateur
    Commentaire de tempusus le 28/08/2005 12:07:54 administrateur CS

    bonjour,

    personnelement je n'aime pas les mauvaises notes sans justification. les 1 etant mises "gratuitement", ils sont supprimés.

    Tempusus
    Admin CS

  • signaler à un administrateur
    Commentaire de kickeur le 28/08/2005 19:00:03

    dsl jai lu le code et j'ia compris merci tres bon remote !!

  • signaler à un administrateur
    Commentaire de koma92 le 01/04/2006 15:04:07

    c ce que je cherchais, merci pour le script ;p

  • signaler à un administrateur
    Commentaire de DblK le 08/06/2006 10:19:26

    J'ai un problème avec cette source. Tout marche correctement sauf que quand j'ai plusieurs slot en attente, lorsque je télécharge je télécharge toujours le dernier slot. Ce qui m'a fois est assez embettant. Mais sinon la source marche nickel j'adore. J'espère avoir bientôt le patch de la nouvelle version corrigeant ce bug.

    Merci à toi.

  • signaler à un administrateur
    Commentaire de bakaman le 04/08/2006 17:40:05

    Bonjour ! J'aimerais bien savoir si quelqu'un pourrait modifié le script de façon à ce qu'il n'y ait qu'un seul slot d'envoi. Car vu qu'il y a 2 slots d'envois... le débit est donc divisé en 2. Je ne voudrais qu'il n'y en ait qu'un seul pour profiter pleinement de la bande passant. Merci à l'âme généreuse qui pourra modifié ceci ou me dire comment le modifié.

  • signaler à un administrateur
    Commentaire de gon288 le 24/11/2006 17:57:15

    bonjour! peut-on modifier le chemin d'acces du dossier du xdcc en le remplacent par un chemin ftp?

  • signaler à un administrateur
    Commentaire de narutosuki le 30/07/2007 00:09:08

    Merci pour ce script, mais je voudrai savoir. Comment on fait pour que quand on tappel !list le bot nous donne la liste des fichiers au lieux de : name 2 slots d'envoie, liste d'attente 10 personnes max, 4 fichiers partagés ?

  • signaler à un administrateur
    Commentaire de kadoucijetaime le 16/11/2007 01:53:20

    bonjour.
    Merci pour ce script qui est fort sympa.
    Personellemnt il y a 2 modifications qui me semblent assez vitales. Pourquoi 2 slots et pas 3 ou 1 ?
    C'est un peu dommage ce choix arbitraire qu'on peut vouloir faire varier selon les connections.
    Comme bakaman j'aimerai beaucoup 1 seul slot.

    Et deuxièmement (mais là ç'est peut etre très complexe, j'y connais pas grand chose) ce serait bien si on pouvait activer ce script sur des chans bien définis, autrement dit qu'il ne marche que sur tel ou tel chan choisi et non pas sur tous les chans ou je me trouve car sur pas mal de chans ce genre de script me fera ban ni plus ni moins.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

Snippets en rapport

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS