[Tinymux] TinyMUX 2.4.0.19 Alpha

Sean Hunter downloadcom at dagnabit.org
Fri Jul 15 15:49:32 EDT 2005


>Just so you know(and more than likely you do), you can webify a game w/o SQL.  
>
>You can use things like perl(I am not sure if PHP has socket connection, it 
>wouldn't surprise me if it does) to do a connect to the game and gather 
>information that way.  
>
>Mike 
>  
>

Indeed, but it's possible to fool these bots through pemits, etc, unless 
you spend some time in working with the outputprefix/suffix and so on. 
Basically, nospoof isn't good enough and can be spoofed.

But so long as the bot doesn't accept commands through pages, and 
ignores anything but it's own command text (between the prefix/suffix) 
you won't have too many complexity issues. I have a rather secure way of 
making it work with pages from players, and so on, without allowing any 
disruptive players to fool it (Admin of course would still be able to).

I haven't actually taken a look at the code for awhile, but it's all in 
perl, multi-threaded, and (can be) event based so pretty extendable. 
PennMUSH and TinyMUX compatible (At least I think it's still pennmush 
compatible, it might not be anymore :p).

If anyone's interested in the unfinished (And probably 'done' in my 
books, since I halted work on it due to the future SQL implementation) 
code, send me an e-mail and I'll send you it. I don't recommend anyone 
who doesn't know Perl pretty well to look through it (Very uncommented, 
very few examples, etc). The base setup just polls weather data from 
weatherunderground and sets attributes on the player object with values 
from the weather page.

Here's a small snippet for how I handle secure pages/commands:

        OUTPUTPREFIX %P
        OUTPUTSUFFIX %S
        &cmdcrypt me=%C
        @idle me=[pemit(num(me),[v(cmdcrypt)] %# 
[switch(version(),*MUX*,%m,Penn*,%c)])]
        &unsetme me=think 
[set(me,unsetme:)][set(me,idle:)][set(me,cmdcrypt:)];@adisconnect 
me=setdiff(v(adisconnect), at trigger me/unsetme,;)
        @force me=@adisconnect me=setunion(v(adisconnect),lit(@trigger 
me/unsetme),;)

%P/%S/%C are randomized data stored in the perl code to test against.

Luckily once the SQL interface is done, this kinda thing won't be 
necessary at all :) Except if someone wanted to make a bot that acted 
like a player/etc.

-- Sean


More information about the Tinymux mailing list