yes i'm aware it's a chatspace type server. i meant what's the server addy. even if there is an autojoin on kick/ban if you ban them properly they won't be able to rejoin. give me the addy to the server you are using and what channel you're in and what nick you're using and i'll be able to help you out need to see how the server is set up
This is made to run on it's own mIRC, not within yours. (Just incase you were not sure on that)
Bring the bot online, into a channel you own.
First we add you as bot owner,
type this in your BOTS mIRC: /addowner YOUR_NICK
Now we add you as the channel owner,
type this in YOUR mIRC: ?addowner YOUR_NICK
Now in the channel, type: ?commands
You will see all the commands that you are allowed to use.
To make a bot auto-join a server, type: ?server add SERVER-LINK
To remove that server from the autojoin, type: ?server del SERVER-LINK
Then you add channels for it to join.
Regarding the op stuff, and this is important.
Your bot is to run as channel owner status if you want it to run properly.
You then only add Op/Hop/Vop into the bot when those nicks are on the channels official ChanServ lists.
It's not a bot that maintains it's own user status's like other bots do,
this one is to protect the structure of the ChanServ lists.
Basically, so your Ops do not have DeOp wars and stuff.
I hope that helps some.
Here is what I meant by what I said:
menu channel {
Auto Join ( $+ $iif(%aj,on,off) $+ )
.on:set %aj on
.off:unset %aj
.-
.Add { hadd -m aj $network $&
$addtok($hget(aj,$network),#,44)
echo -s # added to autojoin }
.Del { hadd -m aj $network $&
$remtok($hget(aj,$network),#,1,44)
echo -s # removed from autojoin }
}
on *:exit: hsave -o aj aj
on *:connect: if (%aj) && ($hget(aj)) join $hget(aj,$network)
on *:start: if ($file(aj).shortfn) hmake aj 100 | hload aj $v1
on *:input:#:{ if ($regex($1,/^([+-])ajoin$|ajo(n|ff)$/iS)) {
if ($regml(1) == ff) { unset %aj | echo -a AutoJoin Off }
elseif ($regml(1) == n) { set %aj on | echo -a Autojoin On }
else { var %h = $hget(aj,$network), %a = $addtok(%h,#,44)
var %r = $remtok(%h,#,1,44) | hadd -m aj $network $&
$iif($regml(1) == +,%a,%r) | echo -a # $iif($regml(1) != -,$&
added to,removed from) autojoin for $server } }
}
You can shorten this line:
(voice !isin $strip($2)) && (halfop !isin $strip($2)) && (op !isin $strip($2)) && (admin !isin $strip($2)) && (owner !isin $strip($2)) {
to:
elseif (!$istok(voice halfop op admin owner,$strip($2),32)) && ($3 !ison $chan) {
And add the -n switch after the writeini command:
writeinin -n autojoin.ini ...
This way mIRC will attempt to write the ini command if it's over the size limit allowed...your ini will surely get bigger over time.
I think in the ON CONNECT event, you could do like this:
var %x = 1,%chans
while (%x <= $lines(AutojoinChannels.txt)) {
%chans = $addtok(%chans,$read(AutojoinChannels.txt,%x),44)
inc %x
}
if (%chans) { join %chans }
So, in this way you're just sending ONE command to join all the channels instead of sending one command per each channel.
Another suggestion: some networks/services are don't support /msg NickServ. Like DALnet; you must type /NickServ or /msg NickServ@services.dal.net... So, it's better to use /NickServ itself.
oh yea and ryan7461035 instead of doing /timerJoin 1 1 /autoJoin
you can get rid of the /'s and just do .timerjoin 1 1 autojoin
the . will silence the timers just makes it a little less annoying
and here is yet another way to do it this one without any regex
and to teen
and the bootlicker blackvenom ( the guy that dont even know how to use vars )
look retard i used vars
alias autoJoin {
if (%nmJoin isop %chJoin) {
describe %chJoin -> [MOD] %nmJoin has joined.
}
else {
describe %chJoin -> %nmJoin has joined.
}
}
on *:join:#:{
if (%awFlag == 1) {
.set %checkchan $chan
var %na $read(automsgchan.txt,w,%checkchan)
if (%na = %checkchan) { halt }
else { %chJoin = $chan
%nmJoin = $nick
.timerJoin 1 1 autoJoin
}
}
}
on *:part:#:{
if (%awFlag == 1) {
.set %checkchan $chan
var %na $read(automsgchan.txt,w,%checkchan)
if (%na = %checkchan) { halt }
if ($nick isop $chan) {
describe $chan -> [MOD] $nick has left.
}
else {
describe $chan -> $nick has left.
}
}
}
on *:text:!start auto message:#:{
%awFlag = 1
describe $chan Auto join / leave massage started.
.set %msgchan $chan
var %na $read(automsgchan.txt,w,%msgchan)
if (%na = %msgchan) { write -w $+ %msgchan automsgchan.txt
}
}
on *:text:!stop auto message:#:{
describe $chan Auto join / leave message stopped.
.set %nomsgchan $chan
var %na $read(automsgchan.txt,w,%nomsgchan)
if (%na = %nomsgchan) { halt }
else { write automsgchan.txt $chan
}
}
Yes I meant reading the servers.ini for the password. Your little identify on connect addition fixed the problem though. Now the password is being sent before attempting to autojoin and +r channels are opening. I was not using any autojoin script, just mIRC's builtin autojoin.
This is great, now I can keep all my passwords in just the .hsh file. Thanks for the quick fix!
@Searinox I'm a little lost here. It sounds like you want me to get the server password from servers.ini and use it for the nickname.
If this is what you are asking I don't think it will work because most people use a different password for their nick then they have for server login.
If you are referring to "perform", it's not a good idea to store passwords here because they are stored in plain text. In edition, you would have to parse the perform block and try to figure out which line is the identify line.
Please clear this up for me so I understand exactly what it is you are asking.
As for the autojoin issue, I think this should be addressed in a properly written autojoin script. If a channel is +R and doesn't let you join, the autojoin script should react by setting a timer and attempting to rejoin in 10 seconds or something.
I will add a on connect identify to this now. Let me know if that helps any.
@Cheiron are you getting a "nickname already in use error" in this case?
If so I'm adding a raw 443 check to address this. You'll have to let me know if it resolves this issue, as I have no way of simulating this situation. Normally the notify will kick in and ghostkill the nick.
I'll post an update now.
This addon is not the only one of its kind but after many searches it is the only one I've found that truly detects and corrects all possible scenarios of nick change, including internet dropout plus IP change. Awesome work you have there.
However I have a suggestion.
Think you can add a checkbox of sorts called "use password from mIRC settings" so that it uses the server password(s) stored in mIRC's settings? It's kind of redundant to have to input the password in both mIRC and NickProtection.
I would be using the password in NP alone but I can't because your script sometimes sends the password AFTER mIRC autojoins channels, so channels that require registration won't open, making me to still rely on mIRC's builtin password system.
Bottom line is a single password system is better. Either fix the script to register the nick BEFORE autojoin or add that checkbox I mentioned.
There is another way of doing this:
on $@*:text:/.k(s(tfu|pam)|commands|notwanted|ugly|(begg|troll|flood|annoy)ing|garbage|autojoin|respect)\b/iS:#:{
var %c $regml(1), %n $strip($2), %2 $strip($2), %r $replace(%c,stfu,1,NotWanted,2,ugly,3,spam,4,begging,5,$&
trolling,6,flooding,7,hopping,8,annoying,9,garbage,10,autojoin,11,respect,12,commands,13)
goto %r
:1
msg # Hmmm.. 12,1My friend,you talk too much shit :)
.timer 1 2 msg # 9,1So, I'm afraid you have to GTFO ! 4D:<
.timer 1 3 kick # %2 4,1LEARN TO SHUT THE FUCK UP!!
halt
:2
msg # 9,1Dont you realize you're not wanted here?
.timer 1 2 kick # %2 4,1Go to #Q_Q and do your stuff
halt
:3
msg # 9,1You're so ugly i cant stand seeing your nick in here x.x
.timer 1 2 kick # %2 4,1Try Uglypeople.com :)
halt
:4
msg # spamming is not allowed here buddy :)
.timer 1 2 kick # %2 no Spam In #main !!!
halt
; so on and so forth
...
Or you can put all the commands and their message inside a text file. Then use the /play with the -c and -l# switch to execute according to each line. Thus you won't need any timer.
[18:46:26] * [10053] Software caused connection abort
woah, ever heard of levels?
To change base levels or to give auto voice on join. you type /cs levels channel set type level Example. /cs levels #help set autovoice -1. Here is a list of levels.
autodeop autohalfop autoop autoprotectect autovoice autojoin signkick Acc-list acc-change akick set ban banme clear getkey halfop halfopme info kick kickme invite opdeop opdeopme protect protectme topic Unban Voice Voiceme memo assign badwords fantasia greet nokick say.
Just set autoop to -1.
jefshmpied what i mean here is test da code.. ex: use what is alias commnd etc..try 2 del n test 1 more..this can help to remove unused code
i recommnd u just use options 2 set da autojoin......
2 much code just for fastjoin ..just confusing..
how about someone who use broadbnd,gprs?...
i think rejoin da channel as asap is how fast ur connections 2 internet...
yup i still learing jefshmpied but there's no harm 2 share what i learn here..
This looks very good, and in fact, I'm very much in need of such thing, but I can't make it work. I've configured it all properly (at least I think I have), but I keep on getting the
message :(
What should be done to make it work?
And btw - if the channel is password protected (the channel as such, not a nick via nickserv) where would I put the channels pwd?
TIA.
:sasza:
alot of servers will default the number of channels you are able to connect too so always remember that. alot of unreal ones will stop you at 10 channels at anyone time. nice different take though for the autojoin. one slight issue though..
you may wish to throttle the join times on connect. if you join more than so many channels at once you may also poof yourself off the server. add a little variable timer or something just to protect yourself. otherwise... gets a 7/10 from me
how about 2 hash tables
one for server
example: Servers irc.icq.com irc.icq.com
one for your channels
example: AutoJoin $network channels
then when your on said network it will autojoin said channels
on *:start: {
if (!$hget(AutoJoin)) { hmake AutoJoin 20 }
if ($exists(AutoJoin.hsh)) { hload AutoJoin AutoJoin.hsh }
if (!$hget(Servers)) { hmake Servers 20 }
if ($exists(Servers.hsh)) { hload Servers Servers.hsh }
set -u5 %a 1
set -u5 %b $hget(Servers,0).item
while %a <= %b {
if (%a == 1) { server $hget(Servers,%a).item | inc %a }
else { server -m $hget(Servers,%a).item | inc %a }
}
else { haltdef }
}
on *:connect: { join $hget(Autojoin,$network) }
i come across the same problems with my bot