C'est un petit distributeur de fichiers, vous choisissez un dossier, un salon de partage et un temps d'affichage de la liste sur ce salon et avec une commande: /ctcp pseudo xdcc send #numero du fichier, vous pouvez télecharger.
Source / Exemple :
;###################################################################;
; Serveur de fichiers xdcc Myxdcc V1.2 03/09 ;
;###################################################################;
;# Modifications ;
;# ;
;# V1.1: -Amélioration du code (plus compact) ;
;# -Ajout de menu plus precis ;
;# ;
;# V1.2 -Possibilité de définir un nombre de téléchargements ;
;# par personne et en tout ;
;# -Ajout d'un tuto dans le code (enjoy) ;
;# ;
;############################Partie dialog##########################;
dialog myxdcc {
title "Serveur xdcc"
size -1 -1 587 323
option pixels
list 1, 12 17 483 191, size
button "Parcourir", 2, 502 17 75 25
button "Vider", 3, 502 45 75 25
button "Ok", 5, 502 292 75 25, ok
text "Liste des fichiers en partage", 6, 164 3 186 14, center
check "Activer/Désactiver le partage des fichiers", 4, 12 296 288 20
edit "", 7, 12 225 266 20, autohs
edit "", 11, 434 225 35 20, right
text "Afficher la liste toutes les ", 12, 307 227 124 14
text "minute(s)", 13, 474 227 52 16
text "Inscrivez un nom de salon de partage", 8, 55 210 183 14
edit "", 10, 434 245 35 20, right
edit "", 14, 434 266 35 20, right
text "Nombre d'envois total", 16, 325 248 109 16
text "Nombre d'envois par personne", 17, 285 268 148 16
edit "", 9, 242 246 35 20, right
text "Nombre total de fichier de la file d'attente", 18, 38 250 203 16
}
;Bon alors le dial est fait avec dialog studio, rien de bien fantastique;
;###################Partie code du dialog###################;
on *:dialog:myxdcc:*:*: {
;Quand un evenement du dialog nommé myxdcc se produit
if ($devent == init) {
;Si l'événement est l'initialisation du dialog
set %myxdcc Addon\xdcc\myxdcc.txt
set %thexfile Addon\xdcc\thexfile.txt
;On enregistre la variable %myxdcc qui est le chemin du fichier texte où sera stocké la liste de vos fichiers
if ($exists(%myxdcc)) {
;Si le fameux fichiers Myxdcc.txt existe,
loadbuf -otliste myxdcc 1 %myxdcc
;alors on charge dans la fenêtre du dialog la liste qui se trouve dans la section [liste] sur le fichier myxdcc.txt
}
if (%checkactiv) {
;si la variable %checkactiv (cette variable représente l'etat d'activation de la checkbox ID 4) n'est pas nulle
did -c myxdcc 4
;alors on active automatiquement la chackbox 4 (activer/desactiver le partage des fichiers)
}
if (%minuteaff != $null) {
;si la variable %minuteaff (temps d'affichage de la liste sur le salon) existe
did -a myxdcc 11 %minuteaff
;alors on l'inscrit dans le dialog dans la bonne case c'est à dire l'editbox 11
}
if (%chanpartage != $null) {
;si la variable %chanpartage (le salon sur lequel vous désirez partager) existe
did -a myxdcc 7 %chanpartage
;alors on l'inscrit dans l'editbox 7
}
if (%totsend != $null) {
;si la variable %totsend (Nombre d'envois total) existe
did -a myxdcc 10 %totsend
;alors on l'inscrit dans l'editbox 10
}
if (%sendbypers != $null) {
;si la variable %sendbypers (nombre d'envois simultané par personne) existe
did -a myxdcc 14 %sendbypers
;alors on l'inscrit dans l'editbox 14
}
if (%totalqueue != $null) {
;si la variable %totalqueue existe
did -a myxdcc 9 %totalqueue
;alors on l'inscrit dans l'editbox 9
}
echo 4 -a Ouverture de la console de partage.
;on fait un tit echo pour dire qu'on ouvre le dialog myxdcc
}
if ($devent == sclick) {
;Si l'évènement est de cliquer sur le bouton gauche de sa souris dans le dialog myxdcc
if ($did == 2) && ($did(1).lines == 0) {
;Si le clic est effectué sur le bouton 2 (parcourir) et que la liste 1 est vide
set %dossierxdcc $sdir(*)
;on enregistre la variable %dossierxdcc comme etant le dossier choisi dans la console qui s'ouvrira grace à $sdir(*)
set %nbrfiles $findfile(%dossierxdcc,*,0,1)
;on enregistre la variable %nbrfiles qui sera le nombre de fichiers que contient %dossierxdcc
set %comxdcc 1
;on etablie la variable %comxdcc afin de pouvoir faire la boucle à venir
write -c %myxdcc
;on efface le fichier myxdcc.txt afin d'éviter toute erreur de superposition de listes dans le fichier
while (%comxdcc <= %nbrfiles) {
;on effectue une boucle jusqu'a ce que %comxdcc soit egale à %nbrfiles, c'est à dire jusqu'a temps d'atteindre le dernier fichier du dossier
did -a myxdcc 1 [ # [ $+ [ %comxdcc ] ] ] $nopath($findfile(%dossierxdcc,*,%comxdcc,1))
;on inscrit dans la liste 1 chacun des fichiers du dossier sans leur chemin
inc %comxdcc 1
;on augmente de 1 la variable %comxdcc afin d'arretter la boucle lorsqu'on arrive au dernier fichier du dossier
}
}
if ($did == 3) && ($did(1).lines != 0) {
;si on clic gauche sur le bouton 3 (vider) et que la liste n'est pas vide
did -r myxdcc 1
;on efface la liste
write -c %myxdcc
;on efface le fichier texte myxdcc.txt
}
if ($did == 5) {
;si on clic gauche sur 5 (ok)
if ($did(1).lines != 0) && ($did(11) != $null) && ($did(7) != $null) && ($did(10) != $null) && ($did(14) != $null) && ($did(9) != $null) {
;si les editbox 7,10,11,14,9,15 et la liste 1 ne sont pas vide
write -c %myxdcc
;on efface myxdcc.txt afin d'eviter les erreurs toujours!
set %comxdcc 1
;on enregistre la variable %comxdcc pour la boucle à venir encore
while (%comxdcc <= $did(1).lines) {
; on fait la boucle tant que %comxdcc n vaut pas le nombre de ligne dans la liste 1
if ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size < 1000) {
;si la taille du fichier est inferieur à 1000 octets
set %taillexdcc [ $+ $file($findfile(%dossierxdcc,*,%comxdcc,1)).size o]
;on enregiste la variable %taillexdcc comme la talle du fichier en octets
}
if ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size < 1000000) && ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size >= 1000) {
;si la taille du fichier est inferieur à 1000000 octets mais superieur ou egale à 1000 octets
set %taillexdcc [ $+ $ceil($calc($file($findfile(%dossierxdcc,*,%comxdcc,1)).size / 1000)) Ko]
;on enregiste la variable %taillexdcc comme la talle du fichier en kilo octets (apres un savant calcul)
}
if ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size < 10000000000) && ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size >= 1000000) {
;si la taille du fichier est inferieur à 10000000000 octets mais superieur ou egale à 1000000 octets
set %taillexdcc [ $+ $ceil($calc($file($findfile(%dossierxdcc,*,%comxdcc,1)).size / 1000000)) Mo]
;on enregiste la variable %taillexdcc comme la talle du fichier en mega octets
}
if ($file($findfile(%dossierxdcc,*,%comxdcc,1)).size >= 10000000000) {
;si la taille du fichier est inferieur ou egale à 10 gigas
set %taillexdcc [ $+ $ceil($calc($file($findfile(%dossierxdcc,*,%comxdcc,1)).size / 1000000000)) Go]
;on enregistre la variable %taillexdcc comme la talle du fichier en giga octets(toute façon mirc supporte pas plus de 3go mais sait on jamais ;))
}
writeini %myxdcc liste [ # [ $+ [ %comxdcc ] ] ] $nopath($findfile(%dossierxdcc,*,%comxdcc,1)) %taillexdcc
;toujours dans la boucle on enregistre sur le fichier myxdcc.txt dans la section liste chacun des fichiers du dossier sans leur chemin suivi de la taille telqu'elle à ete definie plus tot
writeini %myxdcc ladresse [ # [ $+ [ %comxdcc ] ] ] $findfile(%dossierxdcc,*,%comxdcc,1)
;on enregistre sur le fichier myxdcc.txt dans la section ladresse chacun des chemin de chaque fichier du dossier
inc %comxdcc 1
;on incremente de 1 la variable %comxdcc afin de finir notre boucle à la fin de la liste des fichiers du dossier %dossierxdcc
}
set %checkactiv $did(4).state
;on enregistre la variable %checkactive qui definira l'etat de la checkbox 4 (activer/desactiver le partage)
set %minuteaff $did(11)
;on enregistre la variable %minuteaff qui definira le temps d'affichage de la liste sur le salon
set %chanpartage $did(7)
;on enregistre la variable %chanpartage qui sera le salon sur lequel on partagera nos fichiers
set %totsend $did(10)
;on enregistre la variable %totsend quisera la limite de nos envois total
set %sendbypers $did(14)
;on enregistre la variable %sendbypers qui sera la limite d'envois par personne
set %totalqueue $did(9)
if ($did(4).state) {
;si la checkbox est coché
echo 4 -a Activation de la console de partage.
;on fait un tit echo
.timerxdcc off
;on arrette le timer
regltime
;on lance le systeme d'affichage sur le salon grace à l'alias regltime
.timerxdcc 0 $calc(%minuteaff * 60) regltime
;on demande à repeter l'affichage de la liste comme on à reglé dans l'editbox %minuteaff et surtout on converti le tout en minute parceque sinon c'est un temps en secondes
}
else {
;sinon (si la checkbox est decochée)
.timerxdcc off
;on arrette les timer
echo 4 -a Désactivation de la console de partage.
;un tit echo pour se signaler qu'on ne partage plus
}
}
else {
;sinon (si une seule case ou que la liste est vide) et que l'on clic sur ok
write -c %myxdcc
;on efface le fichier Myxdcc.txt
unset %minuteaff
;on supprime la variable %minuteaff
unset %checkactiv
;on supprime %checkactiv
.timerxdcc off
;on coupe les timer
echo 4 -a Désactivation de la console de partage, pour activer la console de partage veuillez y choisir un dossier à partager ainsi qu'un salon et un temps d'affichage.
;un echo pour signaler que le systeme n'est pas ou plus configurer pour assurer le partage des fichiers
}
}
}
}
;##############Partie ctcp###################;
ctcp *:xdcc:*: {
;lorsqu'on tape une commande /ctcp pseudo xdcc
if ($2 == send) {
;si le mot apres xdcc est send
if (%checkactiv) {
;si la checkbox 4 est activé
if ($send(0) < %totsend) {
;si le nombre d'envois total n'est pas atteint
if ($send($nick,0) < %sendbypers) {
;si le nombre d'envois par personne pour cette personne n'est pas atteinte
dcc send -c $nick $readini(%myxdcc,ladresse,$3)
;Envoyer le fichier qui correspond à $3 dans le fichier myxdcc.txt à la section ladresse ($3 etant #numero_du_fichier et ce qui lui correspond dans la section ladresse dans le fichier myxdcc.txt est tout simplement le chemin du fichier demandé ;)
}
}
if ($send(0) >= %totsend) || ($send($nick,0) >= %sendbypers) {
if (%comattente < %totalqueue) {
write %thexfile $nick $readini(%myxdcc,ladresse,$3)
.notice $nick Il y a actuellement trop de téléchargements, votre demande vient d'etre placée en file d'attente et vous sera envoyée prochainement restez connecté.
inc %comattente 1
}
}
}
}
}
;#################Partie File d'attente#################;
on *:FILESENT:*: {
if (%checkactiv) {
if ($send(0) < %totsend) && (%comattente != $null) {
dcc send -c $read(%thexfile,1)
write -dl1 %thexfile
dec %comattente 1
}
}
}
on *:SENDFAIL:*: {
if (%checkactiv) {
if ($send(0) < %totsend) && (%comattente != $null) {
dcc send -c $read(%thexfile,1)
write -dl1 %thexfile
dec %comattente 1
}
}
}
;#####################Partie alias############;
alias xdcc {
;on crée l'alias xdcc qui ouvrira le dialog myxdcc quand on tape /xdcc
dialog $iif($dialog(myxdcc),-v,-mied myxdcc) myxdcc
}
alias regltime {
;on crée l'alias regltime pour repondre àa la commande /regltime
msg %chanpartage Serveur de fichiers 13Myxdcc Je partage actuellement13 %nbrfiles fichiers, il y a13 $send(0) $+ / $+ %totsend téléchargement(s) en cours.
;on envoie un message en debut de liste sur le salon %chanpartage
.play -tliste %chanpartage %myxdcc
;on joue la liste des fichier telqu'elle est inscrite dans le fichier myxdcc.txt à la section [liste]
.timerxdccd 1 $calc(%nbrfiles + 1) msg %chanpartage Pour télecharger tapez:4 /ctcp $me xdcc send #numéro_du_fichier n'oublez pas le "#" devant le numéro.13Merci de partager vous aussi :)
;on envoie un message en fin de liste pour expliquer comment telecharger etc...
}
;####################Partie connexion#########;
on *:join:%chanpartage: {
if (%checkactiv) {
.timerxdcc off
regltime
.timerxdcc 0 $calc(%minuteaff * 60) regltime
}
}
on *:LOAD: {
set %comattente 0
}
;###################Partie Menu###############;
menu channel,menubar,status,query,nicklist {
-
Serveur de fichiers:/xdcc
-
}
;##################Bon partage et pas de piratage ;)##################;
Conclusion :
Lire le fichier.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.