What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » global variable not working

Pages: (2): « First [ 1 ] 2 » Last »
global variable not working
Author: Message:
scutterman
Junior Member
**

Avatar
-- Scutterman avatar from Runescape

Posts: 21
– / Male / Flag
Joined: Jul 2007
O.P. global variable not working
I cant touch type so if someone sends me a msg while I am sending one to them I somethimes don't see it until I have sent my msg.

I am trying to create a script to play a sound whenever another person in the coversation sends a message

The code is:

var name; // used to store the name of the user

function OnEvent_Initialize(MessengerStart)
{

    Debug.Trace("Script Started");

}


function OnEvent_SigninReady(Email) // this should assign the name to the variable
{
    name = Messenger.MyName;
    name = MsgPlus.RemoveFormatCodes(name);
    MsgPlus.DisplayToast("",name) // i used this to confirm that this stage was working. It is
}



function OnEvent_ChatWndReceiveMessage(ChatWnd,Origin,Message,MessageKind) // this should play the sound
{                                                                  //if origin is not the same as name

MsgPlus.DisplayToast("",name) // this is used to check that the name is still stored. It is just blank.

Origin = MsgPlus.RemoveFormatCodes(Origin);

    if (Origin != name)
    {
    MsgPlus.PlaySound("i likse the way you moo.mp3",1500) //this sound will be replaced with "type" when i have converted it to mp3
    }
}


function OnEvent_Uninitialize(MessengerExit)
{

    Debug.Trace("Script Ended");

}


The problem is that "name" seems to loose its value when the SigninReady function ends, which it shouldn't do because i've declared it as a global variable.

I'm pretty new to jscript and mpl scripting so any help is appreciated.

Thanks
~~Scutterman~~

Of course the world doesn't make sense
Its only purpose is to be somewhere that
humans can stand around in complaining
that the world doesn't make sense


07-23-2007 09:30 PM
Profile E-Mail PM Find Quote Report
roflmao456
Skinning Contest Winner
****

Avatar

Posts: 955
Reputation: 24
29 / Male / Flag
Joined: Nov 2006
Status: Away
RE: global variable not working
maybe if you try local variables ? :tongue:
[quote]
Ultimatess6
: What a noob mod
07-23-2007 10:33 PM
Profile PM Web Find Quote Report
albert
Veteran Member
*****

Avatar

Posts: 2247
Reputation: 42
– / Male / Flag
Joined: Feb 2005
RE: global variable not working
quote:
Originally posted by roflmao456
maybe if you try local variables ? :tongue:

I don't see how this would solve the issue. =P

quote:
Originally posted by roflmao456
The problem is that "name" seems to loose its value when the SigninReady function ends, which it shouldn't do because i've declared it as a global variable.

Pretty simple, the name variable should be declared on top.
Eg :

code:

name = Messenger.MyName;

function OnEvent_Initialize(MessengerStart)
{

Debug.Trace("Script Started");

}


function OnEvent_SigninReady(Email) // this should assign the name to the variable
{
name = MsgPlus.RemoveFormatCodes(name);
MsgPlus.DisplayToast("",name) // i used this to confirm that this stage was working. It is
}



function OnEvent_ChatWndReceiveMessage(ChatWnd,Origin,Message,MessageKind) // this should play the sound
{   //if origin is not the same as name

MsgPlus.DisplayToast("",name) // this is used to check that the name is still stored. It is just blank.

Origin = MsgPlus.RemoveFormatCodes(Origin);

if (Origin != name)
{
MsgPlus.PlaySound("i likse the way you moo.mp3",1500) //this sound will be replaced with "type" when i have converted it to mp3
}
}


07-23-2007 10:56 PM
Profile E-Mail PM Web Find Quote Report
scutterman
Junior Member
**

Avatar
-- Scutterman avatar from Runescape

Posts: 21
– / Male / Flag
Joined: Jul 2007
O.P. RE: global variable not working
ok it seems to be working now. Thanks for the help

~~Scutterman~~

Of course the world doesn't make sense
Its only purpose is to be somewhere that
humans can stand around in complaining
that the world doesn't make sense


07-23-2007 11:07 PM
Profile E-Mail PM Find Quote Report
Spunky
Former Super Mod
*****

Avatar

Posts: 3658
Reputation: 61
36 / Male / Flag
Joined: Aug 2006
RE: global variable not working
There is a big bug in this script if you want to change your name...

It could all be done in one function and would solve this problem:
code:

function OnEvent_ChatWndReceiveMessage(ChatWnd,Origin,Message,MessageKind) {
     MsgPlus.DisplayToast("",name);
     if (MsgPlus.RemoveFormatCodes(Origin) != MsgPlus.RemoveFormatCodes(Messenger.MyName)){
          MsgPlus.PlaySound("i likse the way you moo.mp3",1500);}
}
<Eljay> "Problems encountered: shit blew up" :zippy:
07-23-2007 11:39 PM
Profile PM Find Quote Report
matty
Scripting Guru
*****


Posts: 8336
Reputation: 109
39 / Male / Flag
Joined: Dec 2002
Status: Away
RE: global variable not working
quote:
Originally posted by albert
Pretty simple, the name variable should be declared on top.
That is wrong and will only work if the user is already signed in.

code:
var name = new String('');

function OnEvent_Initialize(MessengerStart){
    try {
        name = MsgPlus.RemoveFormatCodes(Messenger.MyName);
        MsgPlus.DisplayToast('', name)
        Debug.Trace('Script Started');
    } catch (err) {}
}

function OnEvent_SigninReady(eMail) {
    OnEvent_Initialize(true);
}

function OnEvent_ChatWndReceiveMessage(oChatWnd, sOrigin, sMessage, nMessageKind) {
    MsgPlus.DisplayToast('', name)
    if (MsgPlus.RemoveFormatCodes(Origin) != name) {
        MsgPlus.PlaySound('i likse the way you moo.mp3' ,1500)
    }
}

function OnEvent_Uninitialize(MessengerExit){
    Debug.Trace('Script Ended');
}


This post was edited on 07-24-2007 at 02:29 AM by matty.
07-24-2007 02:10 AM
Profile E-Mail PM Find Quote Report
albert
Veteran Member
*****

Avatar

Posts: 2247
Reputation: 42
– / Male / Flag
Joined: Feb 2005
RE: global variable not working
quote:
Originally posted by Matty
That is wrong and will only work if the user is already signed in.

Isn't it how you create a global variable though?

Because as I understood by the title and thread, that's what he wanted to know.. I didn't look at the code any further.
07-24-2007 02:21 AM
Profile E-Mail PM Web Find Quote Report
matty
Scripting Guru
*****


Posts: 8336
Reputation: 109
39 / Male / Flag
Joined: Dec 2002
Status: Away
RE: global variable not working
You create a global variable by creating it outside the scope of functions hence the top of the script. However if Messenger isn't signed in then the object Messenger.MyName doesn't exist and will cause the script to stop and never start when they sign back in.

That is why my code I create the global variable outside of the scope but declare it as a string instead of Messenger.MyName.

Also the script wont run on Initialize because it catches an error if the user isn't signed in. And when they are signed in it will recall Initialize function.

This is a much better practise. Or instead of try() you can use if (Messenger.MyStatus > 2)
07-24-2007 02:28 AM
Profile E-Mail PM Find Quote Report
scutterman
Junior Member
**

Avatar
-- Scutterman avatar from Runescape

Posts: 21
– / Male / Flag
Joined: Jul 2007
O.P. RE: global variable not working
Ol, Matty's code seems good but  i did notice that the:

if (MsgPlus.RemoveFormatCodes(Origin) != name) {

inside the ChatWndReceiveMessage function should replace "Origin" with "sOrigin" since that's what it is declared as in the function, is that right?

Thanks again for all of the help
~~Scutterman~~

Of course the world doesn't make sense
Its only purpose is to be somewhere that
humans can stand around in complaining
that the world doesn't make sense


07-24-2007 09:07 AM
Profile E-Mail PM Find Quote Report
matty
Scripting Guru
*****


Posts: 8336
Reputation: 109
39 / Male / Flag
Joined: Dec 2002
Status: Away
RE: global variable not working
quote:
Originally posted by scutterman
Ol, Matty's code seems good but  i did notice that the:

if (MsgPlus.RemoveFormatCodes(Origin) != name) {

inside the ChatWndReceiveMessage function should replace "Origin" with "sOrigin" since that's what it is declared as in the function, is that right?

Thanks again for all of the help
~~Scutterman~~

That would be correct!

Ummm 5000 posts weee
07-24-2007 01:16 PM
Profile E-Mail PM Find Quote Report
Pages: (2): « First [ 1 ] 2 » Last »
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On