# MIRC

mIRC é um cliente de IRC, um programa computacional shareware, para o sistema operacional Microsoft Windows, criado em 1995 por Khaled Mardam-Bey com a finalidade principal de ser um programa de chat utilizando o protocolo IRC, onde é possível conversar online com milhões de pessoas de diferentes partes do mundo. Ele era utilizado somente para isto, mas evoluiu para uma ferramenta configurável, que pode ser usada para muitas finalidades devido à linguagem de programação incorporada (mIRC Scripting). Outros usos incluem:
* Gerente para canais de IRC
* Servidor de jogos multiplayer (designados de mIRC-games, jogos de mIRC)
* Leitor de MP3
* Navegador web
* Servidor de DCC, HTTP e de IRC
Apesar de seu caráter limitado os recursos são muito úteis. O programa é muito popular, tendo atingido a marca de 150 milhões de downloads . Também ficou entre o top 10 das aplicações de internet mais populares em 2003 pelo Neilsen Net Ranking. A sua popularidade pode explicar o fato de muitos utilizadores do cliente mIRC pensarem que este é também o nome do protocolo de comunicação que este programa utiliza (IRC), referindo-se "erroneamente" aos servidores e canais de IRC como "servidor de mIRC" ou "canal de mIRC".

## Funcionalidades principais

* Ligação a múltiplos servidores simultaneamente
* Língua de programação incorporada;
* Bases de suporte para CTCP;
* Suporte para som via CTCP (pode ler MP3, WAV, e MIDI);
* Suporte para chat e envio de arquivos por meio do protocolo DCC;
* Tentativas para parar downloads inadvertidos de Trojan horses;
* Servidor de arquivos (através de DCC chat) que permite um utilizador navegar em uma pasta específica e efetuar o download de arquivos;
* Suporte para decoração de texto estilo ANSI e estilo mIRC;
* Reconhecimento e síntese de voz via produtos;
* Capacidade de administração das salas de chat.

## mIRC Scripts

É comum os usuários do mIRC configurarem e modificarem o programa através do mIRC Scripting. Foram criados bastantes canais de IRC, sites e fóruns que ajudam as pessoas a aprender o mIRC Scripting. Existem milhares de scripts que podem se encontrados em sites relacionados com o mIRC, deve-se ter atenção para o fato de alguns scripts possuírem código malicioso.
Exemplos de Código em mIRC Scripting:

### Exemplo 1

    Somando dois números
Observações:
* Em mIRC Scripting, funções de programação são chamadas de Aliases
* A Aliase acima recebe dois dados de entrada: $1 e $2, armazenando os mesmos em duas variáveis locais %n1 e %n2. Por fim, retorna a soma de ambas com o auxílio do identificador $calc.

### Exemplo 2

    Contando um número de 1 até 10
Observações:
* A estrutura de programação é feita através de blocos de chaves como na Linguagem C
* O comando echo é uma função interna do próprio cliente mIRC que exibe na janela atual os valores de %n1 em cada loop.
* mIRC Scripting apenas aceita a estrutura de repetição while
Exemplo 3: Exibindo uma mensagem no canal #Ajuda toda vez quem alguém entrar no mesmo
Observações:
* mIRC Scripting também permite a manipulação de eventos. O Exemplo acima dispara sempre que qualquer pessoa (que não seja você) entre no canal #Ajuda. O evento de ao entrar em canal é o ON !*:JOIN.
* A função msg é interna do cliente e permite enviar mensagens de texto para um canal ou uma pessoa diretamente. No exemplo acima a mesma envia para $chan, sendo esta, um identificador que conterá o canal de onde o evento disparou. A mesma coisa acontece com o identificador $nick que mostra o nick ou apelido do indivíduo que entrou no canal.
Poderíamos ter utilizado desta forma:
O Exemplo exibirá o seguinte texto no canal #Ajuda: Olá fulano bem vindo ao canal #Ajuda, onde fulano é qualquer pessoa.
As possibilidades são inúmeras para mIRC Scripting. É possível automatizar todo um cliente mIRC, sendo que, já existem clientes assim denominados Bots. Os Bots geralmente são programados em mIRC Scripting ou em linguagem TCL com a finalidade de proteger um canal contra ataques de flood, spam, indivíduos com más intenções etc.
mIRC Scripting também permite realizar recursos extraordinários como, efetuar conexões TCP/UDP através de Sockets e até mesmo a manipulação de arquivos DLL