|
Addme Pickup script for IRC eggdrop bot
Please read
This will save me about 70% of queries I get about this script :
- THIS IS NOT a script for MIRC. It's intented to run on eggdrops (or windrops). See website http://www.egghelp.org for more info. I have
no idea of where to get something similar for mIRC, and I wont code it for mIRC.
- I CANT GIVE YOU AN EGGDROP nor lend mine for your pickup channel. You'll have to have someone lend or rent you a shell or an eggdrop. I don't know where you can get one. Same site as above for infos.
Thanks. :)
Pickup ?
A pickup game is :
- players on IRC register into a list by typing something like "!addme"
- once the player list is complete, they all join a game server, form two teams according to local rules, and play :)
Live examples : if you are new to this concept, launch your favorite IRC client, which means mIRC for most of people, and see how things go in severeal channels of Quakenet
(irc.quakenet.org). You can try "/list *pickup*", or check this url, join #ctfpickup.euro (english spoken), or join #ctfpickup.fr (mainly french, english understood :), the biggest channel as I speak (300+ people everynight, about 50 games a day)
Pickup detailed, and script features
A pickup game is : X players join a server, 2 of them are captains, and pick one player in their
team after each other. Once the two teams are
formed, they play :)
This TCL script is used to manage a channel topic
where you want to organise pickup games.
For example, you need a given number of players
to play [insert any game name here] and wish
to allow anyone on the channel to register on a list (I've been contacted by people using this script with Quake - of course - but also CS, UT, Battlefield, DayOfDefeat, even Worms :)
You can have the bot to sit in multiple channels
and manage one or more topics without getting
messy stuff.
Players who want to fill in an available slot (a dot
in topic) use public message commands : !addme
To leave list, they type : !removeme
As soon as the players list gets full, the bot warns
every registered player with a private notice .
When a game starts, and if you set it to do so, the bot
can pick 2 players from the topic list (eg team captains),
and pick a given number of maps from a map list (force
players to play a map, or to chose from a short list)
When the topic gets full, and if you set it to do it, the
bot can automatically clear players list , so that other
gamers can type !add asap.
If some of them are late, and topic isnt automatically
cleared, you can recall everyone in the list : !recall
If you wish, when topic gets cleared (either automatically
by the bot, or manually by you with !removeall) the server
mentionned in topic can automatically cycle through
a given server list : useful if you have at least 2 dedicated
servers and when topic gets completed fast on populated
channels, so players wont join a server where a game is going on.
Map list and server list mentionned above are managed
directly from irc , with /msg commands such as
"/msg botname readservers #channel" (and readmaps , addmap , removemap , etc..
These infos are persistant and written to disk : if the bot dies or quits, map and server lists will be
read from disk so you dont need to redo list from scratch,
nor 'hardwrite' them directly into script.
When a player joins the IRC channel, the bot greets
him with a message of your choice.
At any moment one can be messaged the help : !help
The help message will vary, depending on if the requester
is an op or not (public / admin commands)
Every command (except !addme and !removeme) can be assigned
to ops only, or be public commands.
You can keep track of how many games have been played using !stats , change the Message Of The Day with !motd , change server ip with !server ...
Download
Download the script from egghelp.org : look for Ozh (my nickname) in the TCL script archive.
Installation & tips
Please note : the script is heavily commented. This makes it easier to understand how things work if you're a bit into TCL, and easier to customize messages, for example to suit your language needs. I strongly advise you to read the whole script and the comments.
Configure the script : at the very beginning of the script,
you have to modify several lines. "Modify the script" means "edit it with a raw text editor", such as Notepad or Ultraedit in Windows, NOT Write or Word or anything like this !
Each variable you need to modify is commented inline, and
a suggested value is mentionned.
Again : Edit the script with a raw text editor, on Windows your
Notepad will do fine. DONT USE WORDPAD OR WORD
Upload the script : put it in your eggdrop's script directory,
something like /home/you/eggdrop/scripts/
At the end of your bot's configuration file (eggdrop.conf),
add this line : source scripts/addme.tcl
In the middle of your eggdrop.conf, dont forget to add
pickup channels if not already done : mentionning
channels in the script wont make the bot join them. The bot must already sit in theses channels before the script is even downloaded, ok ? :)
To have the bot load the script, .rehash or .restart
the bot. Once it has joined your pickup channel(s),
ERASE TOPIC AND TYPE !REMOVEALL.
Please read the above sentence twice, as it will
save me another 50% of queries I get :>
Make sure your bot is and will always be opped in
channels, otherwise it wont be able to change topic,
and some admin commands reserved to ops may not work.
There are several scripts around to auth your bot
on a network service. For example, concerning Q or L
on Quakenet, go to www.egghelp.org
and look for "auth Q" in the TCL archive.
Another good idea is enforcing +t mode in pickup
channels, to prevent players from modifying topic
by accident, and thus breaking it :) (botwise, I
mean :)
The topic *must* keep the original pattern. Dont change it manually. If anything goes wrong and the bot doesnt seem to work anymore, clear the topic, and type !removeall.
Once your bot sits in your pickup channel, type
!help and play around with admin commands to
populate map and/or server lists (if you wish
to use this feature)
This scripts works nice with QStats for Eggdrop,
which will allow players to retrieve stats
from game servers directly from within IRC.
To get this script, head to www.egghelp.org
and look for 'qstat' in the search form.
Troubleshooting, FAQ
This script and its previous versions have been
around for a few months, here are the questions
I've been queried about
Q : How do I load the script ?
A : Add "source scripts/addme.tcl" at the end of
your eggdrop.conf file and restart or rehash the
bot. And read the fucking manual included with the script.
Q : egdropt.conf file ??? How do I laod the script in mIRC ??
A : Put your fingers into a plug and ask for some
water on the ground around you. And read the fucking manual included with the script.
Q : I've edited the script but the bot crashes
when I try to load it !!!1
A : Use a raw text editor, like Notepad on
Windows or pico on Linux. DONT use something like
Wordpad on Windows. And read the fucking manual included with the script.
Q : I've edited the script and loaded it, but I
have an error when I try to [add or change ip or
anything] which says : "Tcl error [addme_something]:
can't read "tmp": no such variable"
A : Erase topic, clear topic, empty topic, rm -f topic,
type !removeall so the bot creates a new clean topic
with a valid structure, then !add or !ip or anything. And read the fucking manual included with the script goddamnit.
Q : I've edited the script and loaded it, but I
have an error when the bot starts : "Tcl error (..blah blah..) illegal channel : #yourchan (blah blah)
A : Either you didn't edit properly the script, or you simply didn't add #yourchan to your main eggdrop.conf file. Warning, adding the channel with .+chan may not work.
Q : But how do I add a channel in my eggdrop.conf ??
A : There must be something like this in your configuration file :
channel add #myl33tpickup {
chanmode "+t"
}
Read the eggdrop docs for more information, but this will do the job.
Q : There's a bug, it's not working.
A : Wrong, you modified it and now it's not working.
I've tested it on eggdrops and windrops 1.6.4 and
1.6.13, with TCL 8.3.3 and 8.4.2 successfully. I know dozens of people who successfully installed the script. If
you *just* edit as required the beginning of the
script and run it, it does work. Ok ? ;) (most people querying me pretending they didnt modify anything appear to have modified the topic's layout, for example changing "Next" to "Next Pickup" or stuff like that)
A propos and License
This script is made from scratch, although the
idea was stolen from Echinus and his Echbot
on Quakenet. But his bot is written in Java,
and I wanted to discover and improve my TCL skillz, so I did this one :)
It was designed with Quake pickup games in
mind, but could actually be used for really
any online multiplayer game. I've been contacted
by players from various games : HL / CS, UT, even
Worms :)
I didnt make this script to compete with Echbot
nor try to take its place on Quakenet :)
Echbot is a very good and fast bot. But you cant
tweak things on it nor modify the script.
My script requires an eggdrop, which may be
difficult to get for free, but you manage
everything in it, it's your bot & your script.
I did this script because it was a little
challenge for me, and it was my TCL learning
experiment :)
I must say I'm pretty satisfied with it now,
and I can say that TCL is definitely a crap
language :>
This script is distributed without any warranty.
It's fully open source, you can modify to suit your
needs. After all, the bits of TCL I've learned
come from others' script, so I'll be glad if
you learn things from mine :)
If you modify this script and distribute it, please
include the original version & this readme so
users after you can understand where it comes from
and think I'm the smartest guy on earth.
If you modify this script and / or add something
valuable to it, I'll be glad to hear from you.
Please do not mirror this script, as it will
not be kept up to date when I write a new version.
Latest version will always be available at Slennox's
www.egghelp.org
History
2.00 - February-April 2003
. !promote
. !stats
. !motd
. optionnal autoremoveall
. optionnal autoswitch game server
. map & server list, managed from irc
. better help functions and messages
. lots of options, on a channel basis
. looots of code cleanup
. lessss regular expression, for better compatibility with TCL versions I believe
. from 400 to 1600 lines of code :>
1.01 - March 2002
. very minor (but highly requested) new feature : !server to change server's IP & pass
. a few useless cleanings in code
1.00 - July 2001 or somewhen :P
first release (and, as far as I know, first TCL script of its kind)
Future todos
I have very few spare time and then spend very few time programming TCL (which, I repeat, is a ubersucky language), so don't expect new version each month :P
The improvement I can think about at the
moment is the ability of managing every setting
from IRC, i.e. not editing the beginning of
the script but setting everything from IRC once
the bot is running. Maybe I'll do it one day.
I'll probably also add some stat system to keep track of who's playing, top ten players, most played server, stuff like this
I didnt want to, and won't, add every feature I could
think about or people suggested me, like managing
temporary bans for people who wont join servers,
automatically scanning a game server when
its ip is used in topic, etc...
There are lots of scripts around to do these
things, use them if you want them. I just scripted
what is strictly related to organise pickup games,
the rest is up to you :)
I've been requested to add timers into this
script, that would for example autoclear players list
when it's not been updated for a while, to ensure
all players listed are still here and not gone sleeping :)
I didnt implement this, because it would have completely
gone shit if the bot crashes, or if there is a netsplit,
making the bot leave a pickup channel and come back
a while later. The bot would have lost track of timers.
Plus, timers in TCL suck biiiiig time :)
Credits
Thanks to Slennox from egghelp.org for his
excellent website and for hosting the file.
Thanks to Echinus who have inspired me this
script, with his very efficient (perl, then java) bot Echbot.
Thanks to players in #ctfpickup.fr who have
sent me ideas and feature requests :)
© Ozh, Ozh on #sarl (irc.quakenet.org)
|