# MIRC script

mIRC script, ou mIRC scripting, é uma linguagem de script, integrada com o mIRC, criada por Khaled Mardam-Bey, e que apenas pode ser usada através do mIRC. Esta linguagem permite que existam inúmeros addons, e scripts completos. Para a lista completa de comandos do mIRC veja o help file incluído no mIRC.
Esta linguagem torna muito simples a criação de qualquer código pois ela é de alto nível e torna muito simples a utilização de sockets, dialogs, popups, função, variável, leitura/escrita de ficheiros, etc. Contendo centenas de comandos/funções que permitem fazer quase tudo, o que não poder ser feito com mIRC Scripting pode sempre ser feito através de DLLs escritas em outras linguagens de programação.

## Conceitos básicos

O mIRC Scripting é usado normalmente para criar scripts, add ons com funções interessantes, bots, etc...
Atenção que dependendo da versão do mIRC nem todo o código é portatil, já que alguns comandos são adicionados, outros modificados... Para pormenores das diferenças entre as versões do mIRC veja o versions.txt

### Bot

Um Bot (vem de robot) é um script que é normalmente usado para executar tarefas num canal de IRC, pode exibir mensagens aos utilizadores que entram no canal, e realizar uma série de rotinas automaticamente ao comando de um utilizado (com ou sem acesso).

### Addon

Addon é um script que normalmente executa uma tarefa específica como por exemplo mandar emails, fazer perquisas no google, fazer download utilizando o protocolo http, etc.

### Script

Normalmente quando se fala em script está-se a falar de uma distribuição para o mIRC que engloba várias utilidades que faz com que a sua utilização seja mais simples ou completa que o mIRC em si.

## Editor

Para se aceder ao editor do mIRC onde são escritos os códigos faz-se ALT+R.
O editor está dividido em 5 secções:

### Aliases

As aliases são o que noutras linguagens se chama de função (ou procedimento), isto permite criar mais comandos que não existem no mIRC Scripting, estas aliases podem ser usadas por outras aliases, popups, remotes ou pela linha de comandos do mIRC.
Exemplo:
Nota: Isto deve ser insirido na secção das Aliases
Este código escreve a data na janela actual (daí o parâmetro -a do comando echo). Para esta alias ser executada basta escrever /dizdata
Para aliases com mais de uma linha (é possível executar mais de um comando numa linha com o separador | ) deve-se incluí-las entre chavetas, as aliases podem devolver parametros e/ou receber parametros.
Exemplo:
Este código é um pouco mais complexo, basicamente ele conta até o número do 1º parametro ($1) exprimenta fazer /conta 10 para veres o que devolve faz //echo -a $conta(10) esta é a maneira de fazer a alias devolver um valor, atenção que deve ser precedida por duas / para indicar que não se pretende escrever $conta(10) mas sim o que essa alias devolver.
As aliases podem também ser inseridas nos Remotes desde que precedidas por alias:

### Popups

Esta seção serve para criar as janelas que aparecem quando se clica com o botão direito do mouse em algum lugar, estes lugares podem ser:
* Status - Janela do "status" do sistema
* Channel - Canal
* Query - "PVT" (do inglês: private) ou mensagem privada
* Nick List - Lista dos nicks (apelidos) dos usuários do canal
* Menu Bar - Menu na parte superior
Cada um é independente do outro e pode-se saltar entre eles carregando no menu View no editor.
Exemplo:
O . (ponto) indica que o item pertence a um submenu. Pode-se criar quantos submenus forem necessários, acrescentando mais um . Ao clicar no item, o mIRC executa o comando. O - (hífen) cria um separador entre os itens.
Também podem ser feitas as popups através dos Remotes

### Remote

O Remote é um dos mais importantes, já que permite fazer tudo o que as secções Aliases e Popups fazem e muito mais. Os remotes são simplesmente Eventos, dos quais o cliente IRC usa para se comunicar a um servidor através do protocolo RAW É possível programar em mIRC Scripting interceptando eventos dos quais, são efetuados após um determinado comando for realizado. Os Remotes permitem fazer dezenas de coisas (como dialogs) mas só vamos abordar os eventos.
A sintaxe para a correta manipulação de eventos é a seguinte:
- Explicando: Nível: Utilizado apenas quando uma pessoa tenta utilizar um comando programado em seu script do qual requer nível de acesso. (* = Livre) Evento: Como o nome diz, é o evento do qual o script irá disparar quando este for executado. Argumento: Assim como uma função de qualquer [[[linguagem de programação]]], esta requer algo para que naquele evento, o(s) comando(s) sejam realizados. OBS: Não são todos os eventos que necessitam de argumentos.
O mIRC pode reagir a vários eventos.
Exemplo:
Este evento (on start), é executado quando o mIRC abre, ele escreve na janela do Status "Olá! Tas Bom teu_nick!?", o $+ une o que devolver $me com o que estiver a seguir, ja que estando tudo junto ele vai tentar chamar a função $me!? em vez de $me
Entre dezenas de eventos vale também apena destacar o on text:
Exemplo:
Ao dizer o texto !calc (qualquer coisa) no canal #teste (este campo também permite wildcards) o mIRC vai automaticamente enviar para o canal ($chan) a mensagem "nick_que_deu_origem_ao_evento, o resultado da tua conta é resultado_da_conta_que_foi_escrita_a_seguir_a_!calc"
Aqui esta alguns dos remotes que o mIRC usa
on *:Input:*:{

### Users

Lista de users e seu nível de acesso, para os eventos dos remotes. Isto permite que um evento só seja accionado por exemplo por utilizadores de nível x de acesso.

### Variables

As variáveis podem ser locais ou globais.
As variáveis locais apenas existem durante a execução do comando/evento onde são criadas, ou seja, a sua existência é temporária. Comando: /var %variavel
As variáveis globais, são armazenadas no editor Variables (que se encontra juntos do editor de Users, Remotes, etc) e a sua existência apenas termina com o comando /unset %variavel, para criar usa-se o comando /set %variavel .
Todas as variáveis (excepto as binárias) são antecedidas pelo caracter %