Page 3 of 5

Re: Last requests before feature freeze

Posted: Mon Jun 01, 2009 2:36 pm
by Caled
I had considered suggesting paths a while back, but I decided that it would be easy enough to write my own in lua. The rough plan I had for it was to capture the directions to a numbered list. The reason being how simple it would be to duplicate the reversing of the path, and also how easy to duplicate slow walking.

The use of #SLOW .pathname with 0 timeout on slow-walking is the key to botting tasks like harvesting areas or even clearing out the locusts from Antioch's sewers. For Heiko: In zmud terms, slowwalking is when the path sends each direction on at a time, confirmed and advanced in script with #OK (some other commands exist as well).

In other words, sending all the directions at once is only a small part of the pathing system (and since many muds limit the number of moves you can make per second) its often not even a useful feature. Placing directions into a numbered list makes it pretty easy for the average user to manipulate and use the paths however they want. IMO all that is needed is a "toolbox" package with some functions written in lua to prevent every user from reinventing the wheel. I suppose they could be added to the general library of functions, but I do suggest considering the use of numbers lists rather than storing the directions in a string. That way it is easy for people to use them in strange and different ways.

Re: Last requests before feature freeze

Posted: Mon Jun 01, 2009 5:52 pm
by derekperrault
Caled, good call. I completely forgot about path slow-walking as it related to the mapper.

I certainly wasn't suggesting paths be utilized by the system as strings... just instantiated using strings.

p = path.new('s2w3e') => Path object with attribute: {'s', 'w', 'w', 'e', 'e', 'e'}
Then you get all kinds of hotness...

p.reverse()
p.nth(3)
p.last
And Path should return an iterator, too. (not sure if this can be done with "interfaces" + the for loop or what)
I'm afraid I'm terribly new to Lua, so pardon me if I screw up syntax/idioms.

Re: Last requests before feature freeze

Posted: Tue Jun 02, 2009 5:54 pm
by gurke111
Hello Heiko,

as we've already talked about earlier, I - and perhaps others - would like to get a well working Copy feature, when timestamps are enabled:
timestamps on, mark one line: "EricB idles: real life intrusion".. copy, paste --> "s: real life intrusion"
Thanks for your efforts!

Re: Last requests before feature freeze

Posted: Thu Jun 04, 2009 12:31 am
by derekperrault
Would it be possible to get PCRE as part of the global API?

Like mushclient? http://www.mushclient.com/scripts/doc.p ... al=lua_rex

Re: Last requests before feature freeze

Posted: Thu Jun 04, 2009 6:46 am
by Heiko
This is already available as well as a myriad of other Lua modules like SQL database support etc. that can be used by users who want this kind of functionality.
To load a Lua module, you simply have to load it via "require" in an init script (script item).

Regex libs:
# [lrexlib] (5.1) - a POSIX and Perl (PCRE) regular expression library for Lua.
# [LPeg] (5.1) - a New Pattern-Matching Library for Lua. See also LpegRecipes.

Here is a list of available modules: http://lua-users.org/wiki/LibrariesAndBindings

Re: Last requests before feature freeze

Posted: Thu Jun 04, 2009 2:42 pm
by derekperrault
Heiko, absolutely true. As a matter of fact, I built lrexlib yesterday. It was a bear, because there were some undocumented problems I encountered (maybe the way MacPorts installs luarocks borked something... I dunno). The whole time, I kept thinking, "Man, why isn't regexps packaged with Mudlet?" The reason I made the request is if I build a Lua "plugin" that requires regexps, I'd have to ask every interested party to build the dependency*. Some people don't have that experience.

(*Actually, I just remembered Windows has that nice Lua installer with tons of packages pre-built. OS X has nothing of the sort. Bah.)

I can see your point of view, definitely. Especially when most of your user-base is probably Windows with the packages already installed.

Re: Last requests before feature freeze

Posted: Thu Jun 04, 2009 10:39 pm
by Heiko
That is true. We should discuss what additional Lua packages we should include. PCRE or LPeg? Maybe even SQLLite. Lua Rocks didn't work for Mac OSX?

Re: Last requests before feature freeze

Posted: Thu Jun 04, 2009 10:46 pm
by Vadi
Yeah, I agree there are tons of Lua-extending modules available. We could ship some, but... Lua Rocks also provides functionality for installing them. Shipping Lua Rocks with Mudlet would be an even better solution.

Requires some discussions on this, though - It's a big thing.

Re: Last requests before feature freeze

Posted: Fri Jun 05, 2009 3:14 am
by derekperrault
Lua Rocks did (eventually) work, but it didn't "just work".
In order to install lrexlib, I had to do: luarocks install lrexlib-pcre PCRE_INCDIR=/opt/local/include PCRE_LIBDIR=/opt/local/lib

Prior to setting PCRE_INCDIR and PCRE_LIBDIR, the error I was getting was... Error: Could not find expected file pcre.h for PCRE -- you may have to install PCRE in your system and/or set the PCRE_DIR variable

I tried export PCRE_DIR=..., but that didn't work. Research eventually revealed it is a Luarocks variable, not an environment variable. So, as suggested in an older message on lua-users, I tried: luarocks install lrexlib-pcre PCRE_DIR=/opt/local/include

Still no dice. Finally, I thought to open up the lrexlib rockspec, saw the PCRE_INCDIR and PCRE_LIBDIR variables, tried them out, and lucky for me, my guess was on the money. All in all it was a pretty annoying process.

Oh, another thing. Distributing Mudlet with a set of modules will help keep people from having to modify the package.path and package.cpath variables. That would certainly encourage plug-in sharing, for sure.

Re: Last requests before feature freeze

Posted: Fri Jun 05, 2009 3:23 am
by derekperrault
Heiko wrote:That is true. We should discuss what additional Lua packages we should include. PCRE or LPeg? Maybe even SQLLite.
SQLite would definitely be nice. I also ran into stdlib, which provides a whole host of awesomeness.