global variable not working |
Author: |
Message: |
scutterman
Junior Member
-- Scutterman avatar from Runescape
Posts: 21
– / /
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 |
|
|
roflmao456
Skinning Contest Winner
Posts: 955 Reputation: 24
30 / /
Joined: Nov 2006
Status: Away
|
RE: global variable not working
maybe if you try local variables ?
[quote]
Ultimatess6: What a noob mod
|
|
07-23-2007 10:33 PM |
|
|
albert
Veteran Member
Posts: 2247 Reputation: 42
– / /
Joined: Feb 2005
|
RE: global variable not working
quote: Originally posted by roflmao456
maybe if you try local variables ?
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 |
|
|
scutterman
Junior Member
-- Scutterman avatar from Runescape
Posts: 21
– / /
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 |
|
|
Spunky
Former Super Mod
Posts: 3658 Reputation: 61
36 / /
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"
|
|
07-23-2007 11:39 PM |
|
|
matty
Scripting Guru
Posts: 8336 Reputation: 109
39 / /
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 |
|
|
albert
Veteran Member
Posts: 2247 Reputation: 42
– / /
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 |
|
|
matty
Scripting Guru
Posts: 8336 Reputation: 109
39 / /
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 |
|
|
scutterman
Junior Member
-- Scutterman avatar from Runescape
Posts: 21
– / /
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 |
|
|
matty
Scripting Guru
Posts: 8336 Reputation: 109
39 / /
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 |
|
|
Pages: (2):
« First
[ 1 ]
2
»
Last »
|
|