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
➜ Lua
➜ Newbie question
Posting of new messages is disabled at present.
Refresh page
Pages: 1 2
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Thu 22 Sep 2011 05:20 PM (UTC) |
Message
| Hello,
i have tried everything to make a lua script work with simple one line trigger without any success. can someone please give me an example what i must exectly type into myscript.lua to match "this is a line" and send to the world "say this is a test"
Thank you! | Top |
|
Posted by
| Mm1mark
(24 posts) Bio
|
Date
| Reply #1 on Thu 22 Sep 2011 05:43 PM (UTC) |
Message
| why not just give us an example of what your trying to catch. will make it easier for us to help.
are you trying to match chats, hp, targets, mobs.
bob says... | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #2 on Thu 22 Sep 2011 05:55 PM (UTC) |
Message
| I'm just trying to get myself started with this scripting thing. just match the line i gave. really doesn't matter cause i can't match anything with scripting | Top |
|
Posted by
| Daniel P
USA (97 posts) Bio
|
Date
| Reply #3 on Thu 22 Sep 2011 05:59 PM (UTC) Amended on Thu 22 Sep 2011 06:13 PM (UTC) by Daniel P
|
Message
|
<triggers>
<trigger
match="this is a line"
enabled="y"
regexp="n"
send_to="12"
sequence="100"
>
<send>
Send("say this is a test")
</send>
</trigger>
</triggers>
That's your fairly basic TRIGGER trigger. If you wanted to match a line within a script, you could always do something like string.find(), string.match(), string.sub(), etc.
One such script that I just wrote is as follows:
location = "rep12089176"
items = {
id = "12098735",
name = "Item Name"
}
if string.match(location,"rep",1) ~= nil then
Note("Received container contents!!")
Note("Container number: " .. string.sub(location,4))
for k, v in pairs(items) do
Note(v)
end -- for
end -- if
The string.match(location,"rep",1) returns a numerical position of the first occurrence of the search string "rep" if it exists anywhere in the "location" variable.
The string.sub(location,4) returns the substring in the "location" variable from position 4 onward -> "12089176".
So you COULD do something like string.sub(location,string.match(location,"rep",1))
So in plain English, location is a string variable. Items is a table with two string variables.
If location has the word "rep" anywhere within it, then print the string from the position where "rep" ends onward to the end. Then for every variable in the items table, print the value of it. But only do this if "rep" exists in the location string. | Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #4 on Thu 22 Sep 2011 10:57 PM (UTC) |
Message
|
Jedhi said:
Hello,
i have tried everything to make a lua script work with simple one line trigger without any success. can someone please give me an example what i must exectly type into myscript.lua to match "this is a line" and send to the world "say this is a test"
Thank you!
You don't need to use myscript.lua at all initially. Just script directly inside triggers as Daniel illustrated.
However if you want to go the trigger/script file route, please paste both your trigger, and your script file.
|
For advice on how to copy aliases, timers or triggers from within MUSHclient, and paste them into a forum message, please see Copying XML.
|
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #5 on Fri 23 Sep 2011 12:17 PM (UTC) |
Message
| Thank you!
Is it possible to chech inside a trigger the room i'm in and then dicide which action to take? | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #6 on Fri 23 Sep 2011 07:04 PM (UTC) Amended on Fri 23 Sep 2011 07:32 PM (UTC) by Jedhi
|
Message
| I have tried to figure this mush+lua out.
can someone please point me to right tutorials or something. like where can i find <trigger> <alias> detailid description?
like what do the trigger variables send_to="12" sequence="100" stand for? how can i use custom functions with triggers, how to interact with the mud(aard). for example how to get the rooms id and so on...
like what's the difference between <alias> and AddAlias
AddAlias("test_aliases", "my_test", "gt this is a test", alias_flag.Enabled, "")
is it possible to use user function as a return value?
i hava so many questions.
| Top |
|
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #7 on Fri 23 Sep 2011 11:16 PM (UTC) |
Message
| |
Posted by
| Nick Gammon
Australia (23,122 posts) Bio
Forum Administrator |
Date
| Reply #8 on Fri 23 Sep 2011 11:18 PM (UTC) |
Message
|
Jedhi said:
like what do the trigger variables send_to="12" sequence="100" stand for? how can i use custom functions with triggers, how to interact with the mud(aard). for example how to get the rooms id and so on...
A lot of that is documented here:
http://www.gammon.com.au/forum/?id=7123
However in most cases you just use the GUI interface to create triggers and aliases, and it will put the correct things in there for you. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #9 on Tue 27 Sep 2011 05:02 PM (UTC) |
Message
| thanx again.
i'm trying to create an alias for portals, in mushclient alias settings, which takes the portal out of bag, wears it and then enters.
dest = (%1)
portals = {}
portals['knossos'] = '288375488'
cmd = string.format('get %s bag', portals[dest])
Execute (cmd)
it doesn't work. seems i can't get the value of array. alias name is: prt *
syntax: prt knossos
where i went wrong with this? | Top |
|
Posted by
| Twisol
USA (2,257 posts) Bio
|
Date
| Reply #10 on Tue 27 Sep 2011 05:28 PM (UTC) Amended on Tue 27 Sep 2011 05:29 PM (UTC) by Twisol
|
Message
| Use "%1" instead of (%1). The expansion syntax - %1 and @foo - isn't part of Lua, it's something MUSHclient does for you before the script is run. So when it sees %1, it just replaces it directly in the script with its value.
When Lua gets what you have now, it sees dest = (knossos) , which doesn't mean what you want. It sees knossos as a variable name, and tries to find what value it has. Of course, there is no knossos variable, so dest just gets nil.
If you use "%1", Lua sees dest = "knossos" . Lua knows "knossos" is a string, so dest gets that value. |
'Soludra' on Achaea
Blog: http://jonathan.com/
GitHub: http://github.com/Twisol | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #11 on Wed 28 Sep 2011 09:26 AM (UTC) |
Message
|
dest = %1
portals = {}
portals['knossos'] = '288375488'
portal = portals[dest]
cmd = string.format('get %s bag', portal)
Execute (cmd)
i still get the error. value for portal is nil | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #12 on Wed 28 Sep 2011 12:07 PM (UTC) |
Message
| btw this (%1) is working in another alias!
lvl = (%1)
gear = {}
gear[41] = {284550683,284554076,284553104,284550901,284554217,284550117,284548701,231001032,58189977,284555249,253689542,284551389,284552750,284552936,284551681}
gear[61] = {284931904,284931530,284922537,284929035,284930297,284922748}
eqset = gear[lvl]
if eqset then
j = table.getn(eqset)
for i=1, j do
s = string.format("get %s 272661297;wear %s", eqset,eqset)
Execute (s)
end
else
print ("ERROR: Gear set not found")
end
| Top |
|
Posted by
| Twisol
USA (2,257 posts) Bio
|
Date
| Reply #13 on Wed 28 Sep 2011 05:48 PM (UTC) |
Message
| You didn't add the quotes. You went from (%1) to %1 - you need "%1".
It works in the other one because, as far as I can tell, you expect %1 to contain a number. (42) is valid Lua code - it understands 42 to be a numeric literal value. But (foobar), which would be the case in your original code, is interpreted as a variable access, not a literal string value like "foobar". |
'Soludra' on Achaea
Blog: http://jonathan.com/
GitHub: http://github.com/Twisol | Top |
|
Posted by
| Jedhi
(37 posts) Bio
|
Date
| Reply #14 on Wed 28 Sep 2011 08:12 PM (UTC) |
Message
| got it. if anyone interested, this is how working version looks like:
portals = {}
portals["knossos"] = "288375488"
prt = portals["%1"]
cmd = string.format("get %s bag;wear %s;enter;dual dagger;put %s bag", prt, prt, prt)
Execute (cmd)
| Top |
|
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.
76,795 views.
This is page 1, subject is 2 pages long: 1 2
Posting of new messages is disabled at present.
Refresh page
top