Usando o FsArk
Esse tutorial tem como objetivo explicar como se ajusta o script TCL para que ele rode tanto em Eggdrop para Linux quanto em Eggdrop para Windows (Windrop).
Não é o objetivo desse tutorial explanar conceitos aprofundadamentes técnicos e se concentra, apenas, em configurações básicas para que você rode o fserv sem problemas. Tanto para seu sistema quanto para o canal #Mp3x.
O que você encontrará nesse documento?
Aqui, você não encontrará FAQs e dicas de comandos e/ou pedidos realizados no canal #Mp3x. Também não encontrará FAQs, Howto e/ou dicas para compilação/instalação do Eggdrop, Tcl ou Windrop.
Sobre o Eggdrop você encontra em EggHeads.Org.
Em Windrop Central você encontra o Windrop.
TCL? Acesse ActiveState.
 

Configurando o FsArk para Eggdrop/Windrop
Você deve usar um editor de textos para configurar o script.
São totalmente desaconselháveis editores que geram tabulações e/ou quebras de linha, automaticamente. Um exemplo, é o editor de script do programa mIrc, para Windows. Não use esses programa para configuração do script.
# Diretório dos arquivos gerados pelo fserv (listas e registros).
set dirbot "FsArk/"
# Pasta(as) RAIZ que contém os arquivos que o FServ servirá.
 
Para Linux:
set dirsroot {
{/pub/Clipes/}
{/pub2/Audio/}
}

Aqui você informa quais as pastas que contém os arquivos que deseja servir.
O script busca recursivamente, ou seja, se apenas informar /pub/Audio/, o script irá incluir:
/pub/Audio/
/pub/Audio/Sucessos/
/pub/Audio/Sucessos/2004/
/pub/Audio/Sucessos/2005/
...e assim, sucessivamente.

 
Para Windows:
set dirsroot {
{C:/Clipes/}
{D:/Audio/}
}

Aqui você informa quais as pastas que contém os arquivos que deseja servir.
O script busca recursivamente, ou seja, se apenas informar C:/Meus Arquivos/, o script irá incluir:
C:/Meus Arquivos/
C:/Meus Arquivos/Sucessos/
C:/Meus Arquivos/Sucessos/2004/
C:/Meus Arquivos/Sucessos/2005/
...e assim, sucessivamente.
# O script deverá procurar por novos diretórios que contenham arquivos para servir a cada atualização da lista?
set lst(buscadirs) 1
# Ao ordenar as pastas, o script o fará a partir do diretório raiz?
set lst(mont) 0

Aqui você define a partir de qual diretório raiz/HD/Ponto de Montagem será ordenada a lista de arquivos.
# Quais os tipos de arquivos que deseja servir?
set lst(tipos) ""
Deixando em branco, conforme está, acima, o script listará todos os tipos de arquivos que ele encontrar nas pastas. Desejando que isso não ocorra, você deve informar os tipos que deseja, procedendo da seguinte maneira:
1. Não use caracteres de funções matchs (* ? ~ %) pois o script não os utilizará;
2. Use o ponto;
3. Separe-os por um espaço;
4. Mantenha-os entre aspas.
Ex.:
set lst(tipos) ".mp3 .ogg .mpg .avi .txt"
# Caminho/Nome do programa ZIP se desejar enviar a lista compactada.
 
Para Linux:
set lst(comp) "/usr/local/bin/zip"
Não desejando compactar a lista de arquivos, você deve deixar em branco esse ajuste.
Ex.:
set lst(comp) ""
 
Para Windows:
set lst(comp) "C:/Arquivos de programas/7-zip/7z.exe"
O FsArk, para Windrop, utiliza o programa 7-Zip para compactar a lista de arquivos, em ZIP. Você pode baixá-lo em Www.7-Zip.Org. Não desejando compactar a lista de arquivos, você deve deixar em branco esse ajuste.
Ex.:
set lst(comp) ""
# De quantos em quantos minutos a lista de arquivos será atualizada?
set lst(upitv) 1440
# Máximo de envios por usuário.
set dccs(usu) 1
# Máximo de envios (total de dccs).
set dccs(slot) 2
# Máximo de posições de um mesmo usuário na fila. Não desejando ter fila, ajuste para zero (0).
set dccs(ufila) 2
# Máximo de usuários na fila. Não desejando ter fila, ajuste para zero (0).
set dccs(fila) 10
# O BOT informa sua lista de espera via DCC SEND quando tiver mais de quantos pedidos na mesma?
set dccs(filalist) 5
# Arquivos menores que o informado, aqui (em bytes), serão enviados imediatamente, sem fila.
set dccs(priv) 100000
# Pedidos realizados, ao fserv e com sucesso, e remoção de pedidos da lista de espera (PART/QUIT) informados no CHAT?
set dccs(msglogo) 1
# Deseja que pedidos realizados, ao fserv e sem sucesso, sejam informados no CHAT?
set dccs(msglogf) 1
# Canais do BOT (separe-os com um espaço).
set home "#mp3x"
# Canais alternativos para envios de mensagens de conclusão de DCCs com sucesso do FServ (separe-os com um espaço).
set althome ""

O canal alternativo tem dois objetivos:
1. Diminuir flood no canal (se você possui mais de 2 BOTs rodando em um mesmo canal);
2. Ter um maior controle sobre seus envios não necessitando logar todo um canal de fservers.
Para isso, você deverá informar o nome do canal, aqui e, em conjunto com a próxima configuração, definir que, o BOT deverá enviar as mensagens para um canal específico.
# Para qual/quais #canal/#canais o BOT enviará as mensagens de conclusão de DCC com sucesso?
# 0 - Para nenhum #canal;
# 1 - Para o #HOME (canal principal), apenas;
# 2 - Para o #ALTHOME (canal alternativo), apenas;
# 3 - Para ambos os #canais (canais principal e alternativo).

set msgs(can) 1
# Ajuste, abaixo, para zero (0) se NÃO desejar enviar mensagem de falha no envio e/ou pedido para resumo (0 ou 1).
set msgs(conc) 1
# Intervalo de envios dos anúncios (MINUTOS). Deixe zero (0) para NÃO enviar o anúncio. São 4 anúncios e deve separá-los com um espaço.
# Os valores devem ser inteiros e não menores que 30. A ordem é:
# 1. Anúncio do @Nick;
# 2. Anúncio do @Nick-Top;
# 3. Anúncio do @Nick-Ajuda;
# 4. Anúncio dos @Nick-Info e @Nick-Rec.

set msgs(fsark) "60 70 65 75"

Acima, define que o BOT enviará:
1. O anúncio do fserv de hora em hora (60mins);
2. O anúncio da lista dos Arquivos Mais Copiados de 70 em 70 minutos;
3. O anúncio de arquivos de ajuda de 65 em 65 minutos;
4. Os anúncios das suas estatísticas e regras de 75 em 75 minutos.
Desejando que algum desses anúncios NÃO seja enviado, você deve ajustar zero (0).
Ex.:set msgs(fsark) "60 120 0 0"
No exemplo, o FServ enviará apenas o anúncio principal, contendo o comando @Nick (a cada hora) e sobre sua lista dos Arquivos Mais Copiados (a cada duas horas).
# Qual tema de cor de mensagens deseja usar? Os temas estão definidos no arquivo de temas e são, no máximo, 9 temas. Use 0 (zero) para randômico.
set msgs(temas) 0
# Quantos no pódio dos 'Arquivos Mais Copiados'?
set topx(max) 20
# Ajuste o boolean, abaixo, para zero (0) se NÃO desejar criar ranking.
# Arquivos enviados ainda serão registrados. ZERO, apenas não criará o arquivo com os TopXX Mais Copiados (0 ou 1).

set topx(ftopx) 1
# Ajuste o boolean, abaixo, para zero (0) se NÃO desejar criar estatística alguma dos arquivos enviados (0 ou 1).
# ZERO, somente resultará em um ínfimo menor custo de CPU (não-recomendável).

set topx(fenvs) 1
# Mínimo de caracteres para o @locator/@find?
set loc(minc) 3
# Máximo de resultados a serem exibidos no @locator/@find.
set loc(maxr) 4
# O BOT deverá aguardar por alguns segundos para responder ao comando @Find/@Locator logo após já ter respondido a um outro?
# Isso serve tanto para proteger o BOT de flood quanto para o BOT não causar flood na rede. O valor é de SEGUNDOS e deve ser maior ou igual a 10.
# Obs.: Coloque zero (0) se não desejar aguardar.

set loc(itv) 0

Aqui, cabe o bom senso e a soma de alguns fatores que poderão fazer com que seu BOT NÃO seja freqüentemente expulso por FLOOD do canal. Para isso, você deverá levar em conta:
1. Se você possui uma quantidade expressiva de arquivos para servir;
2. Se usa proxy e se cada BOT tem seu IP único;
3. Quantidade de usuários no canal.
Outro fator positivo é em relação aos custos de máquina e CPU por processo (eggdrop).
A redução dos custos de máquina e CPU, juntos, é muito significativa e em qualquer que seja a situação.
# O BOT deverá responder como ao comando 'ctcp nick VERSION'?
# 0 (zero) o BOT não responde;
# 1 (um) se desejar que o BOT responda com a mensagem padrão;
# Crie sua própria mensagem e defina-a entre aspas. Ex.: set fsarkVers "Rodando Script TCL FsArk para FServ. Script por M8088."

set fsarkVers 1
O FsArk permite que você defina os nomes dos arquivos de registro utilizados por ele.
# Arquivo que conterá os diretórios para servir.
set rg(dirs) "$nick-dirs_fserv.reg"
# Arquivo onde registrar os arquivos enviados com sucesso.
set rg(envs) "$nick-enviados.reg"
# Arquivo onde armazenar o ranking.
set prd(topx) "$nick-Top.txt"
# Arquivo que contém o 'Ajuda'.
set prd(ajuda) "Mp3x_Ajuda.txt"
# Arquivo que conterá a lista de espera para envios via-dcc.
set prd(fila) "$nick-QueTxt.txt"
# Arquivo que conterá os dccs em andamento para envios via-dcc.
set prd(stats) "$nick-StatsTxt.txt"
# Arquivo onde manter a fila.
set rg(fila) "$nick-fila.reg"
# Arquivo onde guardar as estatísticas do FServ.
set rg(est) "$nick-estats.reg"
# Arquivo que manterá os dccs em andamento.
set rg(dccs) "$nick-dccs.reg"
# Arquivo que contém os ADSs nas mensagens dos comandos @Find/@Locator.
set rg(ads) "ads.reg"
# Arquivo que contém os temas de cores das mensagens.
set rg(temas) "Mp3xTemas.reg"
Através do CHAT (party line), você tem recursos para melhor monitoramento do FServ através de seus comandos próprios.
.atualizalista
Atualiza a lista de arquivos para servir. Esse comando atualiza também o arquivo TOP, se o FServ estiver definido para tê-lo.
Use esse comando se você adicionou/removeu/moveu algum arquivo e manteve os mesmos diretórios. Ou se apenas renomeou algum arquivo.
.atualizadirs
Os mesmos procedimentos do comando '.atualizalista'. Antes, porém, atualiza os diretórios que contém os arquivos que serão incluídos na lista.
Use esse comando se você adicionou/removeu/renomeou/moveu algum diretório para servir.
.fila
Exibe a sua lista de espera.
.movefila <posição1> <posição2>
Move um pedido na sua lista de espera.
Ex.: .movefila 7 2 (move um pedido da posição 7 para a posição 2 da fila)
.-fila <posição>
Remove um pedido da sua lista de espera.
.limpafila
Limpa seu arquivo de lista de espera e envia, para o canal, a mensagem de manutenção do FServ.
.stats
Exibe os envios de arquivos em andamento e pendentes.
Obs.: Os pendentes não são informados para usuários do canal.
.matadccs
Encerra todos os envios de arquivos em andamento, limpa o arquivo de transferências em andamento e envia, para o canal, a mensagem de manutenção do FServ.
.top <número de posições>
Exibe a lista dos 'Arquivos Mais Copiados' do FServ.
Se nenhum número/valor for informado, toda a lista é exibida.
.busca <máximo de resultados> <palavra-chave>
Funciona como o @Locator/@Find, exceto que, o máximo resultados encontrados listados é definido no comando.
.ads <opção>
Envia o anúncio do fserve, imediatamente. Opção deve ser Nick, Top, Ajuda ou InfoRec.
Ex.: ads Nick - Envia o anúncio do @Nick.
.slots <total> <por usuário>
Ajusta o total de envios do fserve e máximo por usuário. O total deve ser um múltiplo do total por usuário. Zero não é aceito. Você deve informar os dois valores.
Ex.: slots 2 1 - Total de slots: 2 (1 por pessoa).
.vagas <total> <por usuário>
Ajusta o total de vagas na fila do fserve e máximo por usuário. Você deve informar os dois valores. Zero, em um dos dois valores, tranca a fila (sem fila). Pedidos na mesma não são excluídos.
Ex.: vagas 50 5 - Total de vagas na lista de espera: 50 (5 por pessoa).
.locator <intervalo>
Ajusta o intervalo (em SEGUNDOS) de resposta do servidor @Find/@Locator.
 0 (zero) .........: Servidor ativado e sem intervalo.
-1 (um negativo) ..: Desativa o servidor @Find/@Locator.
10 (dez ou acima) .: Ajusta o intervalo do servidor para o valor informado (SEGUNDOS).
.pedidos <opção> <0 ou 1>
Desliga/Liga a exibição de mensagens na PL de pedidos realizados ao fserve com sucesso ou não e pedidos removidos.
0 (zero) desliga. 1 liga. Opção pode ser OK ou NOK.
OK são pedidos realizados com sucesso e remoção dos mesmos.
NOK são pedidos de usuários recusados pelo fserve.
Ex.: pedidos OK 1 - Ativa a exibição de mensagens na PL de pedidos feitos ao fserve e que foram aceitos. Também, exibe se pedidos foram removidos da lista de espera, por pedido de remoção ou por PART/QUIT.
.tema <Nome Do Tema>
Ajusta o tema de cores que o fserve utilizará. Aleatório, ajusta tipo de tema aleatório. Máximo de 9 temas.
O Nome Do Tema deve ser tal qual se encontra no arquivo de temas, o qual pode ser exibido pelo comando listatemas. Maiúsculo/minúsculo não fazem diferença.
.listatemas
Exibe, na PL, os temas encontrados no arquivo de temas do fserve.
.testatema
Exibe, na PL, um modelo de mensagem do fserve. Se temas de cores for aleatório, cada vez um modelo é exibido.
.tranca <opção>
Desliga parcialmente o fserve. Slots, locator e anúncios não estarão mais funcionais. Porém, mantém todos os demais recursos em total funcionamento.
Opção é opcional e pode ser: +msg1 ou +msg2
+msg1 envia mensagem de que a tranca é por um período de manutenção (destranca envia mensagem de que foi destrancado);
+msg2 envia mensagem de que, após o término do último envio, o BOT estará encerrando (destranca não envia mensagem);
Sem opção, nenhuma mensagem é enviada ao canal.
.destranca
Reativa recursos do fserve parcialmente desativados pelo comando tranca.
.checa
Exibe as configurações do FServe.
.fsark
Exibe esse texto de ajuda :) (no CHAT).