Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Entire forum
➜ MUSHclient
➜ General
➜ Variable not updating?
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Mike.mac.kenzie
(13 posts) Bio
|
Date
| Tue 13 Feb 2024 04:15 AM (UTC) |
Message
| So I'm trying to use variables to do some different things, but I'm having a problem with variables not updating. When I use the following code, it always notes the variables as the same thing even though I have changed the variable to a new thing.
SetVariable("thing", "1")
Note("@thing") -- shows 1
SetVariable("thing", "2")
Note("@thing") -- shows 1
then when I run that again, both notes show as 2 instead of one. How do I get the proper numbers to show? | Top |
|
Posted by
| Fiendish
USA (2,533 posts) Bio
Global Moderator |
Date
| Reply #1 on Tue 13 Feb 2024 05:16 AM (UTC) Amended on Tue 13 Feb 2024 05:17 AM (UTC) by Fiendish
|
Message
| Nobody should ever use the @thing notation for variables inside script code, because basically nobody understands what it actually does, what it's for, and when to not use it.
Use Note(GetVariable("thing")) instead and it will do what you expect. |
https://github.com/fiendish/aardwolfclientpackage | Top |
|
Posted by
| Mike.mac.kenzie
(13 posts) Bio
|
Date
| Reply #2 on Tue 13 Feb 2024 08:34 PM (UTC) |
Message
| What if I wanted to update the variable and then run an ifcheck on it right after? How would I get that to work correctly?
SetVariable("thing", "1")
if @thing == 1 then
Send("dosomething")
end
Wont this also not work correctly? | Top |
|
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Reply #3 on Tue 13 Feb 2024 09:09 PM (UTC) Amended on Tue 13 Feb 2024 09:12 PM (UTC) by Nick Gammon
|
Message
| The expanding of variables is done at the start of
script execution. Thus, changing a variable and testing it in the same
script will always return the original variable contents.
So this won’t work:
SetVariable("thing", "1")
if @thing == 1 then
Send("dosomething")
end
This will:
SetVariable("thing", "1")
if GetVariable ("thing") == "1" then
Send("dosomething")
end
Note that variables are stored as strings, not numbers, which is why
I quoted the “1”.
What is easier anyway is to use Lua variables, if you don’t need them
to persist from one session to another, ie.
thing = 1
if thing == 1 then
Send("dosomething")
end
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Date
| Reply #4 on Wed 14 Feb 2024 05:43 AM (UTC) |
Message
| |
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
3,277 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top