[Home] [Downloads] [Search] [Help/forum]

Gammon Forum

See www.mushclient.com/spam for dealing with forum spam. Please read the MUSHclient FAQ!

[Folder]  Entire forum
-> [Folder]  MUSHclient
. -> [Folder]  Lua
. . -> [Subject]  New to MUSHclient Lua Scripting
Home  |  Users  |  Search  |  FAQ
Username:
Register forum user name
Password:
Forgotten password?

New to MUSHclient Lua Scripting

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page


Posted by Silentius   (16 posts)  [Biography] bio
Date Sat 01 Mar 2008 07:45 PM (UTC)
Message
Ok, so after browsing around for a while.. I felt ready to try and set up my own script. I loaded up mushclient... connected to the world... created a new trigger...

Put in

BLahh * more blaaahh * blah.

Then went down to Scripts and put in
MyScript

I then went to the scripts, made a blank lua file and put in:

Sub Myscript (name, trig_line, wildcards)

local mobname = wildcards [1]
local experience = wildcards [2]

Say("That was a " .. mobname)
Say("I got " .. experience)

end -- of Myscript

After that I saved it. However.. when I try to test the trigger to see if it all works, I get the following error...

[string "Script file"]:1: '=' expected near 'Myscript'

Any tips?
[Go to top] top

Posted by Nick Gammon   Australia  (21,677 posts)  [Biography] bio   Forum Administrator
Date Reply #1 on Sat 01 Mar 2008 08:08 PM (UTC)
Message
Have a look inside exampscript.lua which comes with MUSHclient. The examples there should help.

For a start, you declare functions with "function" not "Sub" (Sub is from VBscript). So the first line should read:


function Myscript (name, trig_line, wildcards)


Then these lines use a function that doesn't exist:


Say("That was a " .. mobname)
Say("I got " .. experience)


You need to "Send" the "say" command, like this:


Send ("say That was a " .. mobname)
Send ("say I got " .. experience)


Or if you meant to say it to yourself, use Note, like this:


Note ("That was a " .. mobname)
Note ("I got " .. experience)



- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Silentius   (16 posts)  [Biography] bio
Date Reply #2 on Sat 01 Mar 2008 08:15 PM (UTC)

Amended on Sat 01 Mar 2008 08:40 PM (UTC) by Silentius

Message
[string "Script file"]:6: attempt to call global 'Say' (a nil value)
stack traceback:
[string "Script file"]:6: in function <[string "Script file"]:1>

Called By:
Function/Sub: Myscript called by trigger
Reason: processing trigger ""

(Once I get one simple script working, I will be able to do the rest.)
[Go to top] top

Posted by Nick Gammon   Australia  (21,677 posts)  [Biography] bio   Forum Administrator
Date Reply #3 on Sat 01 Mar 2008 08:38 PM (UTC)
Message
Did you read the rest of my reply? There is no MUSHclient command "Say" - you need to use "Note".

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Silentius   (16 posts)  [Biography] bio
Date Reply #4 on Sat 01 Mar 2008 08:41 PM (UTC)
Message
Ahh, I'm all hopped up on Limeade. Sorry :)
[Go to top] top

Posted by Silentius   (16 posts)  [Biography] bio
Date Reply #5 on Sat 01 Mar 2008 08:48 PM (UTC)
Message
<triggers>
<trigger
enabled="y"
group="Multi Line"
lines_to_match="2"
keep_evaluating="y"
match="(.*?) is DEAD\!\nYou receive (.*?) combat experience\.\Z"
multi_line="y"
regexp="y"
script="Myscript"
sequence="100"
>
<send>%0</send>
</trigger>
</triggers>


I'm getting calls to the script, but It's not sending back the responses... I recoded the lua to be

function Myscript (name, trig_line, wildcards)

local mobname = wildcards [1]
local experience = wildcards [2]

Send ("say That was a " .. mobname)
Send ("say I got " .. experience)

end -- of Myscript



[Go to top] top

Posted by Nick Gammon   Australia  (21,677 posts)  [Biography] bio   Forum Administrator
Date Reply #6 on Sat 01 Mar 2008 09:40 PM (UTC)
Message
Well it worked when I tested it.

One thing to look out for is, after a script error, it disables calling that script function again, so you don't get the same error message many times.

You need to go to the Game menu -> Reload Script File. This forces the file to be reprocessed and clears any script errors for triggers.

I would also not put %0 in the "send" box as that is sending the matching line back to the MUD. Just leave it blank.

An alternative approach, which might be simpler, is to use "send to script" rather than using a script file. In this case you leave the "script" box blank, and put scripting commands directly in the trigger, like this:


<triggers>
  <trigger
   enabled="y"
   group="Multi Line"
   lines_to_match="2"
   keep_evaluating="y"
   match="(.*?) is DEAD\!\nYou receive (.*?) combat experience\.\Z"
   multi_line="y"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>
local mobname = "%1"
local experience = %2

Send ("say That was a " .. mobname)
Send ("say I got " .. experience)
</send>
  </trigger>
</triggers>


Now the wildcards are just %1, %2 etc. inside the Send box. Note that you have to quote string wildcards (like a mob name).

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Silentius   (16 posts)  [Biography] bio
Date Reply #7 on Sat 01 Mar 2008 10:30 PM (UTC)

Amended on Sun 02 Mar 2008 02:15 AM (UTC) by Silentius

Message
awesome. Thanks for the help. Now that I figured out how to make it work, I've already added on the ability to figure out when my exp gain drops, and move onto the next tier of enemies :)
[Go to top] 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.


4,274 views.

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page

Go to topic:           Search the forum


[Go to top] top

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at FutureQuest]