28 de dezembro de 2010

Como Criar Scripts para MSN Plus


Introdução: Criar Scripts para MSN Plus

Antes de mais nada, postarei o link para baixar o MSN Plus, software 100% gratuito que traz muitas funcionalidades extra ao seu Windows Live Messenger !

* Link p/ MSN 2009: http://baixaki.ig.com.br/download/messenger-plus-live.htm
* Link p/ MSN 7: http://baixaki.ig.com.br/download/messenge...-para-o-MSN.htm
Também podem procurar o download neste link
Se quiserem as outras versões é só procurar e se não encontrarem postem aqui !

Se quiserem, leiam a documentação do MSN Plus para a criação de scripts neste link (em inglês)

A linguagem é baseada em JavaScript, sendo muito parecida na sintaxe !
Até a extensão o arquivo é a mesma (é salvo como ".js")
Quem programa em linguagens como JavaScript e afins terá muita facilidade na criação de scripts
É claro que estou postando para que qualquer um possa "compreender", não restringindo apenas para quem programa em JavaScript.
Entretando, é extremamente recomendado ter conhecimento básico em alguma linguagem de programação

Agora que já sabem o básico de como criar seus próprios scripts, vamos à melhor parte...

Criando o primeiro Script

Estou utilizando o MSN 2009, mas não há tanta diferença sobre como prosseguir
1. Abra o messenger e logue-se
2. Entre nas configurações do MSN Plus (provavelmente tem escrito "Plus !" lá no menu do seu MSN ou então você verá um botão com o símbolo do Plus - ver imagem do botão com símbolo do Plus)
3. Você verá uma tela como nesta imagem
4. No menu da esquerda tem uma opção: "scripts". Clique nela !
5. Você verá uma tela como nesta imagem
Existem opções como importar (caso você já tenha um script, que pode ter sido enviado por um amigo), remover, e dentro da janelinha "autores de script" existem as opções criar novo (você pode criar seus próprios scripts caso tenha conhecimento suficiente) e editar (você pode editar scripts seus ou de outras pessoas)
6. Como não temos um script pronto, clique em criar novo (ensinaremos como criar um script simples)
7. Será aberta uma mensagem para você digitar o nome de seu script ! Você pode digitar o nome que você quiser

Pronto !
Depois de escolher um nome para seu script será aberta a janela um editor, que será utilizado para modificar os códigos, conforme mostrado nesta imagem
Todo o código é baseado em eventos

O que são eventos ?

Eventos são todas as ações que ocorrem em determinado programa.Podemos ligar determinado código a um evento
Por exemplo: Um usuário clica em um botão
Quando o botão é pressionado, o programa aciona as funções que deverão ocorrer quando tal botão for pressionado
O MSN Plus está repleto de eventos: Evento quando o usuário "loga" no MSN (Signin), quando "desloga", quando bloqueia um contato, quando muda o nick ou sub-nick, etc.
Enfim, os eventos servem para que um código seja executado quando ocorrer "determinada ação"

Como podemos utilizar os eventos

Simples !
Basta definir uma função para que seja executado quando determinado evento ocorrer.
O código da função deverá estar entre chaves ("{" e "}")
Um exemplo de função para um evento seria:
CODE
function OnEvent_Initialize(MessengerStart) {
// Os códigos das funções ficam aqui (isso é um comentário, será visto mais adiante)
}

Comentários são muito utilizados em linguagens de programação para facilitar o estudo do script
Eles não interferem no funcionamento do código, mas são muito úteis !
Exemplos de comentários
CODE
// Este é um comentário de uma linha
// Só podemos escrever uma linha de cada vez com esse tipo de comentário

Outro exemplo
CODE
/* Com esse comentário
podemos escrever várias linhas de uma só vez
É muito útil !
*/

/* Também podemos utilizá-lo em uma linha só */


Um exemplo de função para trocar a mensagem pessoal do usuário assim que o messenger fosse carregado seria:
CODE
function OnEvent_Initialize(MessengerStart) {
// O código a seguir muda a mensagem pessoal do usuário
Messenger.MyPersonalMessage = "Isto é apenas um teste !"
}


Para testar as funções, vá na tela de configurações de script novamente (ver imagem)
Marque o quadradinho (check box) e clique em aplicar
No lugar onde estava escrito "desactivado" (é português de portugal...), ficará escrito "activado"
Confira a imagem

Criando Menús

Já viu aqueles scripts para MSN Plus amigáveis, com uma ótima interface, que possuem até menús ?
Se nunca viu, observe esta imagem, é de um script de minha autoria !!
Á primeira vista parece algo complicado, extremamente difícil !
Mas não é nada disso
Podemos fazê-lo com apenas algumas linhas de código !
Utilizaremos a função "OnGetScriptMenu" para escrever o menú na tela
Mostrarei um exemplo de função para escrever o menu
CODE
function OnGetScriptMenu(Location) {
meu_menu = "<scriptMenu>";
    meu_menu += "<MenuEntry Id=\"PrimeiraOpcao\">";
        meu_menu += "Minha Primeira Opção";
    meu_menu += "</MenuEntry>";
    meu_menu += "<MenuEntry Id=\"SegundaOpcao\">";
        meu_menu += "Minha Segunda Opção";
    meu_menu += "</MenuEntry>";
meu_menu += "</ScriptMenu>";
return meu_menu;
}

Esse simples código cria um menú para seu script que pode ser acessado a partir do botão do Plus! (ver imagem)
Mas, ao utilizar esse código vêm uma pergunta:
QUOTE
Para que serve aquele "id" em cada entrada do Menú
Ele é muito útil para "nomear" cada opção do menú e para utilizar em eventos.
Dessa forma, quando o usuário clicar em algo no menú, poderemos saber em qual opção ele clicou
QUOTE
Como poderemos saber em qual opção o usuário clicou e quando ele clicou ??

Isso pode ser feito a partir do seguinte evento: OnEvent_MenuClicked()
Será visto mais adiante !

Criando um programa que muda a mensagem pessoal do usuário

Nosso objetivo nesse exemplo será:
* Criar um menú onde haverá um botão que, quando clicado, altera a mensagem pessoal do usuário
* Existirão várias mensagens pessoais para se alterar, todas definidas em um Array (é como uma variável que possui várias dimensões, onde podemos guardar vários valores diferentes)
* Será salvo um "backup" da mensagem pessoal do usuário antes que o script passe a ser executado.Dessa forma, quando o usuário desabilitar o script, a mensagem pessoal será "restaurada"

Postarei o código pronto para que vocês possam analisar.
Explicarei melhor a parte dos botões no menú (evento de clique no menú), a qual ainda não ensinei detalhadamente
CODE
// Declara as variáveis
var backup;
var mensagens = new Array();
var numero_mensagem;
// Fim da declaração de variáveis

function OnEvent_Initialize(MessengerStart) {
// Faz o "backup" da mensagem pessoal
backup = Messenger.MyPersonalMessage

//Definimos quais são as mensagens
mensagens[0] = "Estou on-line !"
mensagens[1] = "Aprendendo MSN Plus Script"
mensagens[2] = "Testando minha aplicação"
mensagens[3] = "I am Jonathan Queiroz"
mensagens[4] = "Última Mensagem"
//Coloca a primeira mensagem por padrão
numero_mensagem = 0
Messenger.MyPersonalMessage = mensagens[numero_mensagem]
}

function OnEvent_Uninitialize(MessengerExit) {
// Restaura a mensagem pessoal
Messenger.MyPersonalMessage = backup
}
function OnGetScriptMenu(Location) {
// Cria todo o menú
meu_menu = "<scriptMenu>";
    meu_menu += "<MenuEntry Id=\"ProximaMensagem\">";
        meu_menu += "Próxima Mensagem";
    meu_menu += "</MenuEntry>";
    meu_menu += "<MenuEntry Id=\"VoltaMensagem\">";
        meu_menu += "Mensagem Anterior";
    meu_menu += "</MenuEntry>";
meu_menu += "</ScriptMenu>";
return meu_menu;
}
function OnEvent_MenuClicked(MenuItemId,Location,OriginWnd) {
    /* Verificamos qual foi o botão clicado a
    partir da opção MenuItemId */
    if (MenuItemId=="ProximaMensagem") {
        // Chamamos a função "ProximaMensagem()"
        ProximaMensagem()
    }else if (MenuItemId="VoltaMensagem") {
        // Chamamos a função "VoltaMensagem()"
        VoltaMensagem()
    }
}
function ProximaMensagem() {
    if (numero_mensagem>=mensagens.length-1) {
        /* Se estiver na última mensagem, retorna à primeira
        mensagem do Array
        */
        numero_mensagem = 0
    }else{
        // Soma 1 ao número da mensagem
        numero_mensagem++
    }
    Messenger.MyPersonalMessage = mensagens[numero_mensagem]
}
function VoltaMensagem() {
    if (numero_mensagem<=0) {
        /* Se estiver na primeira mensagem (0), vai
        para a última mensagem
        */
        numero_mensagem = mensagens.length-1
    }else{
        // Subtrai 1 do número da mensagem
        numero_mensagem--
    }
    Messenger.MyPersonalMessage = mensagens[numero_mensagem]
}


Pronto !
Esse "simples script" faz com que seja trocada a mensagem pessoal do MSN ao se clicar em um "simples botão" !!
Gostaram do script ??

Código de Meu Script pronto

Vou colocar mais um script aqui, esse já tinha pronto !
Os scripts acima eu criei só pra postar aqui, mas vou colocar mais um script que já havia criado antes
Funcionalidades:
* Altera a mensagem pessoal a cada 5seg (5000 ms)
* Possui botões de "parar" e "continuar" para controlar o script

Também é um script "simples", mas aborda alguns elementos não citados aqui, como o uso do evento "timer"
Como já disse, eu não criei esse script para postar aqui, já estava criado
Portando não está com muitos comentários para auxiliar o entendimento, mas dá pra aproveitar e aprender um pouco
CODE
var mensagem = new Array();
var tempo_segundos = 5;
var tempo_ms = tempo_segundos*1000;
var cont = 0;
var Started = false;
var ScriptMenu;
var backup_mensagem = Messenger.MyPersonalMessage;

function OnEvent_Initialize(MessengerStart) {
    mensagem[0] = "Férias !!"
    mensagem[1] = "Finalmente, férias !!!"
    mensagem[2] = "Demorou, mas chegou !!"
}
function TrocaMensagem() {
    if (cont>=mensagem.length-1) {
        cont=0;
    }
    Messenger.MyPersonalMessage = mensagem[cont];
    cont+=1;
    MsgPlus.AddTimer("TempoTrocaMensagem",tempo_ms);
    }
function OnEvent_Timer(TimerId) {
    if (TimerId=="TempoTrocaMensagem") {
        Started = true
        TrocaMensagem()
    }
}
function OnGetScriptMenu(Location) {
    ScriptMenu = "<scriptMenu>";
           ScriptMenu    +=  "<MenuEntry Id=\"ModificaStatus\">";
               if (Started) {
                      ScriptMenu += "Pausar script";
               }else{
                      ScriptMenu += "Continuar script";
              }
           ScriptMenu += "</MenuEntry>";
       ScriptMenu += "</ScriptMenu>";
    return ScriptMenu;
}
function OnEvent_MenuClicked(MenuItemId,Location,OriginWnd) {
    if (MenuItemId=="ModificaStatus") {
        if (Started) {
            PararMensagemPessoal()
        }else{
            IniciarMensagemPessoal()
        }
    }
}
function PararMensagemPessoal() {
    MsgPlus.CancelTimer("TempoTrocaMensagem");
    Started = false;
    Messenger.MyPersonalMessage = backup_mensagem
}
function IniciarMensagemPessoal() {
    Started = true;
    backup_mensagem = Messenger.MyPersonalMessage;
    TrocaMensagem()
}


Espero ter ajudado quem queria aprender como criar scripts para MSN Plus e também aqueles que não têm interesse em aprender, mas queriam saber como funciona !

Estarei postando mais tutoriais relacionados à criação de Scripts pelo MSN Plus (e também outras funcionalidades do mesmo)

Mas só lembrando:

Só execute scripts para MSN Plus de fontes confiáveis !
Eles podem ser tão perigosos quanto qualquer outro executável
Confie apenas em scripts fornecidos/reconhecidos pelo MSN Plus ou de locais confiáveis
Antes de executar qualquer script, abra o mesmo e verifique se seu código é confiável
Caso tenha dúvida quanto a ser confiável ou não, poste aqui no fórum e poderei analisar o código !
E-mail Del.ici.ous BlogThis! Technorati Compartilhe no Twitter StumbleUpon Compartilhar no Facebook Promova este post no orkut Share to Google Buzz

0 comentários:

- Todos os links e arquivos que se encontram no site, estao hospedados na propria Internet, somente indicamos onde se encontra, nao hospedamos nenhum CD ou programas que seja de distribuiçao ilegal. - Qualquer arquivo protegido por algum tipo de lei deve permanecer, no máximo, 24 horas em seu computador. - Eles podem ser baixados apenas para teste, devendo o usuário apagá-lo ou compra-lo após 24 horas. - A aquisicao desses arquivos pela internet eh de única e exclusiva responsabilidade do usuário. - Os donos, webmasters e qualquer outra pessoa que tenha relacionamento com a producao do site nao tem responsabilidade alguma sobre os arquivos que o usuario venha a baixar e para que ira utiliza-los.