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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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:

dizdata echo -a Data: $date 

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:

conta { var %contador = 1 while (%contador <= $1) { inc %contador }  ; Devolve o valor ; Já agora, isto é um comentario =)  return Contei até $1 } 

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:

alias teste echo -a só pa ver se funciona... 

Popups[editar | editar código-fonte]

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:

Nick .Mostra: echo -a O teu nick é $me .Mudar: nick $$?="Insira novo nick" | echo -a nick mudado - Sair: exit 

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[editar | editar código-fonte]

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:

on ::,[ARGUMENTO2]..::{ Comandos... } 

- 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:

on *:start: echo -s Olá! Tas Bom $me $+ !? 

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:

on *:text:!calc *:#teste: { msg $chan $nick $+ , o resultado da tua conta é $calc($2-) } 

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:*:{

 if ($1 == .del) { chanserv access $chan del $2 }  if ($1 == .add) { chanserv access $chan add $2 $3 $4 $5 }  if ($1 == .access) { chanserv access $chan list $2 }  if ($1 == +ban) || ($1 == .ban) { mode $chan -o $2 | !ban $chan $2 $3 $4 }  if ($1 == .clearbans) { chanserv clear $chan bans }  if ($1 == .clearops) { chanserv clear $chan ops }  if ($1 == .clearvoices) { chanserv clear $chan voices }  if ($1 == .clearusers) { chanserv clear $chan users }  if ($1 == .akick) { chanserv akick # add $2 $3- }  if ($1 == .deakick) { chanserv akick # del $2 }  if ($1 == .infcanal) { chanserv info # $+ $2- }  if ($1 == .info) { nickserv info $2 }  if ($1 == .invite) { invite $2 $chan }  if ($1 == .restricted) { chanserv set $chan restricted $2- }  if ($1 == .set) { chanserv levels $chan set $2- $2- }  if ($1 == .mlock) { chanserv set $chan mlock $2- }  if ($1 == .levels) { chanserv levels $chan $2- }  if ($1 == .topiclock) { chanserv set # topiclock $2- }  if ($1 == .mode) { mode # $2- }  if ($1 == !uptime) { say $uptime(system,1) }  if ($1 == .topic) { chanserv topic $chan $2- }  if ($1 == .ngay) { nick nicknamezinho }  if ($1 == .n) { nick nickname }  if ($1 == .entry) { chanserv set $chan entrymsg $2- }  if ($1 == .list) { chanserv access $chan list }  if ($1 == .ajoin) { nickserv ajoin add $chan }  if ($1 == .deajoin) { nickserv ajoin del $chan }  if ($1 == .desc) { chanserv set $chan DESC $2- }  if ($1 == -oa) { mode $chan -oa $me $me }  if ($1 == .regi) { chanserv register $chan r0x }  if ($1 == .op) { chanserv op $chan $1 $2- }  if ($1 == .deop) { chanserv deop $chan $1 $2- }  if ($1 == .voice) { chanserv voice $chan $1 $2- }  if ($1 == .devoice) { chanserv devoice $chan $1 $2- }  if ($1 == .kick) { chanserv kick $chan $1 $2 $3- }  if ($1 == .send) { memoserv send $2- }  if ($1 == .mcancel) { memoserv cancel $2- }  if ($1 == .mlist) { memoserv list new }  if ($1 == .read) { memoserv read $2- }  if ($1 == .mdel) { memoserv del $2- } 

}

Users[editar | editar código-fonte]

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[editar | editar código-fonte]

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 %

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]