XChat is an IRC chat program for both Linux and Windows. It allows you to join multiple IRC channels (chat rooms) at the same time, talk publicly, private one-on-one
conversations etc. Even file transfers are possible.
Official website:
http://xchat.org/ is the official website which you can get the latest version and download it easily and install it in your pc
Forum website:
http://forum.xchat.org/ as its will help you if you are looking for some help about the script or some useful addons you might want.
Please Note
You may use XChat for Windows for free for 30 days. If, after this time, you would like to continue using the product, you are required to register. Registration is a one time for $19.99
Some people their nicks were dropped while they forgot to identify so this way might help you for auto identify if u are using mIRC or any script based on it like
(PnPlus,IRCap,NoName,IceChat,.....etc.)
How to set it
Go to tools on the top bar then Options - Connect -- Option - Perform then mark Enable perform on connect
and go to Perform commands: then type the command for the identify with your own password /msg nickserv identify <yourpassword> .
Please Note:
If you didn't identify for 30 days .. your nickname will be dropped and anyone else can register it ... and if it happened its not our problem when people come ask about their nicknames since we always advice for identify ur nick each time u come in
How to see the flags thats already set in your channel:
For specify nickname
Code:
/msg chanserv flags #<channel> <nickname>
For all the nicknames
Code:
/msg chanserv flags #<channel>
Please Note: be aware from giving Founder access to anyone as it will be the same access as your if you are the one who registered the channel ... as he can from you from access or drop the channel.
This addon is to help you to save your away message as for some users who use mIRC got this problem while he cant save his away message also it has a bit functions that u will like it .. i just found it by luck on a forum and i saw it really nice so i thought its a good idea to share to you all
How to load the addon on your mIRC script
1- Go on Tools on the MenuBar - Script Editor - Remote - File - New then copy the code down and paste it there then press Ok.
2- Download the Away System.mrc down, Put it on the mirc folder and go on Tools on the MenuBar - Script Editor --- > Remote - File - Load and then choose the place of the Away System.mrc and then press Open then Ok.
Code
Code:
dialog asy {
title "Away System"
size -1 -1 172 159
option dbu
box "Set Away Nick", 1, 1 1 57 34
edit "", 2, 4 12 50 9, autohs
button "Set", 3, 5 23 20 9, flat
button "Unset", 4, 34 23 20 9, flat
box "Set Back Nick", 5, 62 1 57 34
edit "", 6, 65 12 50 9, autohs
button "Set", 7, 65 23 20 9, flat
button "Unset", 8, 95 23 20 9, flat
box "Add/Del Away Reason", 9, 1 36 118 35
edit "", 10, 4 45 111 9, autohs
button "Add", 11, 4 56 54 10, flat
button "Del", 12, 61 56 54 10, flat
box "Auto Away", 13, 121 1 50 70
radio "None", 14, 124 12 25 10, flat
radio "30 Minutes", 15, 124 23 37 10, flat
radio "60 Minutes", 16, 124 34 37 10, flat
radio "90 Minutes", 17, 124 45 37 10, flat
radio "120 Minutes", 18, 124 56 40 10, flat
box "Reason List", 19, 1 72 170 60
list 20, 4 81 163 46, size vsbar
box " Away/Back", 21, 1 133 61 25
button "Away", 22, 4 143 25 10, flat
button "Back", 23, 34 143 25 10, flat
box "Highlite Notice", 24, 64 133 43 25
check "On", 25, 69 143 17 10, flat
check "Off", 26, 88 143 17 10, flat
box "Date/Time", 27, 108 133 63 25
text "", 28, 112 143 55 8
}
menu menubar,channel {
.Away System { dialog $iif($dialog(asy),-v,-md) asy asy }
}
alias -l asytime { did -ra asy 28 $time(mm.dd.yy h:nn:ss tt) }
alias -l auto.away.check {
if ($ceil($calc($nick($active,$me).idle / 60)) == $iif(%t.30,30,$iif(%t.60,60,$iif(%t.90,90,$iif(%t.120,120,))))) && (!$away) {
amsg 14,1[12,1»0,1:: Idle Away After ::12,1«14,1]14,1[12,1»0,1:: $iif(%t.30,30,$iif(%t.60,60,$iif(%t.90,90,$iif(%t.120,120,)))) Minutes ::12,1«14,1]
.away Idle Away After $iif(%t.30,30,$iif(%t.60,60,$iif(%t.90,90,$iif(%t.120,120,)))) Minutes
nick %asyanick
}
}
alias asaway {
if (!$away && %asyanick && %asybnick) {
nick %asyanick
amsg 14,1[12,1»0,1:: I am Now Away ::12,1«14,1]14,1[12,1»0,1::Reason: $1- ::12,1«14,1]14,1[12,1»0,1:: Left At ::12,1«14,1]14,1[12,1»0,1:: $time(h:nn tt) ::12,1«14,1]
.away $1-
}
}
alias asaback {
if ($away && %asyanick && %asybnick) {
amsg 14,1[12,1»0,1:: I am Now back from ::12,1«14,1]14,1[12,1»0,1::Reason: $awaymsg ::12,1«14,1]14,1[12,1»0,1:: Gone for ::12,1«14,1]14,1[12,1»0,1:: $duration($awaytime) ::12,1«14,1]
nick %asyanick
.away
}
}
on *:load: {
}
on *:DIALOG:asy:close:0:{ .timerasytime off }
on *:DIALOG:asy:init:0:{
did -a $dname 28 $time(mm.dd.yy h:nn:ss tt)
.timerasytime 0 1 asytime
if ($away) { did -b $dname 22 | did -e $dname 23,25,26 }
if (!$away) { did -e $dname 22 | did -b $dname 23,25,26 }
if (%asyanick) { did -a $dname 2 %asyanick }
if (%asybnick) { did -a $dname 6 %asybnick }
did -c $dname $iif(%t.none,14,$iif(%t.30,15,$iif(%t.60,16,$iif(%t.90,17,$iif(%t.120,18,)))))
$iif(%highlite,did -c $dname 25,did -c $dname 26)
if $read(awayreason.txt) {
var %x = 1
while ( %x <= $lines(awayreason.txt)) {
did -a $dname 20 $read(awayreason.txt,%x)
inc %x
}
}
}
on *:DIALOG:asy:sclick:*:{
if ($did == 14) { unset %t.* | set %t.none on | .timert* off }
if ($did == 15) { unset %t.* | set %t.30 on | .timerta 0 1 auto.away.check }
if ($did == 16) { unset %t.* | set %t.60 on | .timertb 0 1 auto.away.check }
if ($did == 17) { unset %t.* | set %t.90 on | .timertc 0 1 auto.away.check }
if ($did == 18) { unset %t.* | set %t.120 on | .timertd 0 1 auto.away.check }
if ($did == 25) { set %highlite on | did -u $dname 26 }
if ($did == 26) { unset %highlite | did -u $dname 25 }
if ($did == 3) { $iif(!$did(2).text,noop $input(Please Enter An Away Nick,uwo,Error!),set %asyanick $did(2).text) }
if ($did == 4) { $iif(!$did(2).text,noop $input(Please Enter An Away Nick,uwo,Error!),unset %asyanick $did(2).text) | did -r $dname 2 }
if ($did == 7) { $iif(!$did(6).text,noop $input(Please Enter A Back Nick,uwo,Error!),set %asybnick $did(6).text) }
if ($did == 8) { $iif(!$did(6).text,noop $input(Please Enter A Back Nick,uwo,Error!),unset %asybnick $did(6).text) | did -r $dname 6 }
if ($did == 11) {
if (!$did(10).text) { noop $input(Please Enter A Reason,uwo,Error!) }
else {
.write awayreason.txt $did(10).text
did -r $dname 10,20
var %x = 1
while ( %x <= $lines(awayreason.txt)) {
did -a $dname 20 $read(awayreason.txt,%x)
inc %x
}
}
}
if ($did == 12) {
if (!$did(20).seltext) { noop $input(Please Select A Reason,uwo,Error!) }
else {
var %dawayreason $read(awayreason.txt,w,$did(20).seltext)
if (%dawayreason == $did(20).seltext) {
write -dl [ $+ [ $readn ] ] awayreason.txt
did -r $dname 20
var %x = 1
while ( %x <= $lines(awayreason.txt)) {
did -a $dname 20 $read(awayreason.txt,%x)
inc %x
}
}
}
}
if ($did == 22) {
if (!%asyanick || !%asybnick) {
noop $iif(!%asyanick,$input(Please Enter An Away Nick,uwo,Error!),$iif(!%asybnick,$input(Please Enter A Back Nick,uwo,Error!)))
}
elseif (%asyanick && %asybnick && !$did(20).seltext) {
nick %asyanick
did -b $dname 22
did -e $dname 23,25,26
.away none
amsg 14,1[12,1»0,1:: I am Now Away ::12,1«14,1]14,1[12,1»0,1::Reason: None ::12,1«14,1]14,1[12,1»0,1:: Left at ::12,1«14,1]14,1[12,1»0,1:: $time(h:nn tt) ::12,1«14,1]
}
elseif (%asyanick && %asybnick && $did(20).seltext) {
nick %asyanick
did -b $dname 22
did -e $dname 23,25,26
.away $did(20).seltext
amsg 14,1[12,1»0,1:: I am Now Away ::12,1«14,1]14,1[12,1»0,1::Reason: $did(20).seltext ::12,1«14,1]14,1[12,1»0,1:: Left at ::12,1«14,1]14,1[12,1»0,1:: $time(h:nn tt) ::12,1«14,1]
}
}
if ($did == 23) {
nick %asybnick
amsg 14,1[12,1»0,1:: I am Now back from ::12,1«14,1]14,1[12,1»0,1::Reason: $awaymsg ::12,1«14,1]14,1[12,1»0,1:: Gone For ::12,1«14,1]14,1[12,1»0,1:: $duration($awaytime) ::12,1«14,1]
did -e $dname 22
did -b $dname 23,25,26
unset %highlitecheck.*
.away
}
}
on *:TEXT:*:#:{
if (%highlite && $away) {
if (%asyanick isin $1- || %asybnick isin $1-) {
inc $+(%,highlitecheck,.,$nick)
if ($($+(%,highlitecheck,.,$nick),2) = 1) { .notice $nick 14,1[12,1» 0,1::This Is A One Time Response:: I am Away ATM :Reason:12,1 $awaymsg 0,1:Gone for:12,1 $duration($awaytime) 12,1«14,1] | window @away | aline @away $nick Called Your Name At $time(h:nn:tt) In $chan And Said: $1- }
if ($($+(%,highlitecheck,.,$nick),2) >= 2) { window @away | aline @away $nick Called Your Name At $time(h:nn:tt) In $chan And Said: $1- }
}
}
}
on *:input:*:{
if (%t.30 || %t.60 || %t.90 || %t.120) {
if ($away) {
amsg 14,1[12,1»0,1:: I am Now back from ::12,1«14,1]14,1[12,1»0,1::Reason: $awaymsg ::12,1«14,1]14,1[12,1»0,1:: Gone For ::12,1«14,1]14,1[12,1»0,1:: $duration($awaytime) ::12,1«14,1]
nick %asybnick
unset %highlitecheck.*
.away
}
}
}
How to use
Right click on any of the mIRC window for the popup prompt called Away System Click on it so that u can see all the functions there also for a fast way you can use /asaway <reason>for away and also /asaback when you back
This addon will send you meesage when there is a Netsplit between 2 servers as its normally happened between two ... Just load it and wait for next netsplit and it u will see it.
How to load the addon on your mIRC script
1- Go on Tools on the MenuBar - Script Editor - Remote - File - New then copy the code down and paste it there then press Ok.
2- Download the Netsplit Detector.mrc down, Put it on the mirc folder and go on Tools on the MenuBar - Script Editor --- > Remote - File - Load and then choose the place of the Netsplit Detector.mrc and then press Open then Ok.
Code
Code:
on *:quit:{
if (*.*.* iswm $1) && (*.*.* iswm $2) && (!%detected) {
echo -st 8,1 Netsplit detected between $1 and $2
ebeeps on
beep 5 500
set -u60 %detected on
}
}
on *:Notice:*This*channe*has*been*closed*:#:{ if ($me isop $chan) { .mode $chan +bMR p:*!*@* | /msg $chan 0,4 $chan Has Been Locked For Unregistered Users, Sorry For Any Inconvenience | .timer 1 60 .mode $chan -MR } }
;to set it pls use the following steps
;step1: type /alias mynicks return yournick1!yournick2!yournick3!yournick4
;step2: type /alias pass return yourpass1;yourpas2;yourpas3;yourpas4
;step3: type /notify yournick1 upto /notify yournick4
on ^!*:notify: {
if ($findtok($mynicks,$nick,1,33)) {
%nghost. [ $+ [ $cid ] ] = $nick
ns ghost $nick $gettok($pass,$ifmatch,59)
echo $color(notify) -at ::NickServ- your registered nick : $+ $nick used by some one from $site $+ , autoghost activated
}
else { echo $color(notify) -at $nick is on irc }
haltdef
}
on ^*:notice:*ghost*killed*:?: {
if ($nick == nickserv) && (%nghost. [ $+ [ $cid ] ]) { echo $color(notice) -at NickServ- Your Ghost: %nghost. [ $+ [ $cid ] ] has been successfully killed }
halt
}
There are many ways for you to regain your nick i will let you see the easiest on of them.
How to make regain for your nickname
To do this you have to use one of these 2 ways
1- Type this command and then the nick will be regain immediately /msg nickserv regain <nickname> <password> if you didnt regain you nick after this command change your nick to the nick you want to regain it /nick yournick then it shall work fine.
2- Type this command /msg nickserv ghost <nickname> <password> and then you need to type /nick yournick as the ghost command used to disconnect the one who is using your nick so u can make sometime ghost and don't change your nick just if you dont want someone use your nick.
How i know that i need to use the regain command
1- Someone is using my nick and online with it
2- After i login i found my nick changed automatic to Guest and when i try to get it back it give me this message
This addon will kick anyone one the room has been banned with reason Banned if he was banned by you or anyone else and sure if u are halfop or more .. i made this as the ppl who using mIRC based will not have that function but i think others scripts will have it.
Example
Quote:
(01:23:13) * Agent sets mode: +b *!*@8872FA.F049B8.232DE2.01BF5A
(01:23:14) * Cracon was kicked by Agent (Banned)
How to load the addon on your mIRC script
1- Go on Tools on the MenuBar - Script Editor - Remote - File - New then copy the code down and paste it there then press Ok.
2- Download the Auto kick on ban.mrc down, Put it on the mirc folder and go on Tools on the MenuBar - Script Editor --- > Remote - File - Load and then choose the place of the Auto kick on ban.mrc and then press Open then Ok.
Code
Code:
alias -l add {
var %1 = $strip($1)
goto $prop
:allow | return $addtok(%allow,%1,44)
:dis | return $remtok(%allow,%1,1,44)
}
on @*:ban:%allow:{
var %i = 1
while ($ialchan($banmask,#,%i).nick) {
if ($v1 != $me) {
kick # $v1 Banned
}
inc %i
}
}
menu status,channel,nicklist,menubar,query {
Channel Allow List
.Add {
set %allow $add($$?"Add a channel to my Allow List:").allow
echo 4 -at * $! has been added to my allow list!
}
.Del {
set %allow $add($$?"Remove a channel from my Allow List:").dis
echo 4 -at * $! has been removed from my allow list!
}
}
How to use
Right click on any of the mIRC window for the popup prompt called Channel Allow List You can add and delete a channel from there. The script will only trigger on the added channels
If you would like to change the kick reason just change the Banned on the code and type the reason you want
This addon will let you see all the clones from the users in a specify channel.
Example
Quote:
----------------- #20_something Clones Scan ----------------
- Clones from E9EA8C.4376EB.DBD858.502B3B
- 1. Alberto (irc)
- 2. Bigbanana (irc)
- Clones from 6C196A.18A1A8.D3A2C7.967CAB
- 1. BaDBoY- (CSOHBET)
- 2. C-E-M (asdT)
- Clones from ABABA2.89A482.2A31DC.0993E9
- 1. Bonaparte_ist (Java)
- 2. istanbul_man (Java)
- Finished scanning for clones, 6 clones from 3 hosts found
-------------------- End Of Scan --------------------
How to load the addon on your mIRC script (choose either 1 or 2)
1- Go on Tools on the MenuBar - Script Editor - Remote - File - New then copy the code down and paste it there then press Ok.
2- Download the Clone Scanner.mrc down, Put it on the mirc folder and go on Tools on the MenuBar - Script Editor --- > Remote - File - Load and then choose the place of the Clone Scanner.mrc and then press Open then Ok.
Code
Code:
alias clonescan {
var %d = linesep $iif($active == Status Window,-s,$active)
if ((!$chan) && (!$1)) {
%d | echo -ca ctcp * Error: specify a channel to scan for clones! | %d
return
}
if (($1) && ($1 !ischan)) {
%d | echo -ca ctcp * Error: you are not on the channel you specified | %d
return
}
set %do_clonescan $iif($1,$1,$chan)
set %ds_clonescan $iif($active == Status Window,status,$active)
who %do_clonescan
}
alias -l clonescan2 {
var %i = 1,%a
var %tc = 0,%th = 0
var %chan = $1
linesep %chan
clonescan.echo -c ctcp %ds_clonescan 1-----------------4 %chan Clones Scan1 ----------------
while (%i <= $nick(%chan,0)) {
if ($ialchan($address($nick(%chan,%i),2),%chan,0) > 1) {
if ($istok(%a,$remove($address($nick(%chan,%i),2),*!*@),32)) {
inc %i
continue
}
inc %th
%a = $addtok(%a,$remove($address($nick(%chan,%i),2),*!*@),32)
var %b = 1
clonescan.echo -c info %ds_clonescan 1- Clones from4 $remove($address($nick(%chan,%i),2),*!*@) $+
while (%b <= $ialchan($address($nick(%chan,%i),2),%chan,0)) {
clonescan.echo -c info %ds_clonescan 1-1 %b $+ . $ialchan($address($nick(%chan,%i),2),%chan,%b).nick ( $+ $ialchan($address($nick(%chan,%i),2),%chan,%b).user $+ )
inc %b
inc %tc
}
}
inc %i
}
if (%tc > 0) dec %tc
clonescan.echo -c ctcp %ds_clonescan 1-4 Finished scanning for clones, %tc clone $+ $iif(%tc != 1,s) from %th host $+ $iif(%th != 1,s) found
echo -a -------------------- 4End Of Scan1 --------------------
unset %ds_clonescan
}
alias -l clonescan.echo {
if ($3 == status) echo $1 $+ s $2 $4-
else echo $1-
}
raw 315:*: {
if (%do_clonescan == $2) {
unset %do_clonescan
clonescan2 $2
halt
}
}
raw 352:*: if (%do_clonescan) halt
How to use:
Just type /clonescan #channel and wait few seconds and then you will get all the clones on the channel.