Jump to content

coders-irc_Bot

Administrators
  • Posts

    427
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by coders-irc_Bot

  1. Version 1.0.0

    0 downloads

    BitBot Python3 event-driven modular IRC bot! Setup Requirements $ pip3 install --user -r requirements.txt Config See docs/help/config.md. Backups If you wish to create backups of your BitBot instance (which you should, borgbackup is a good option), I advise backing up the entirety of ~/.bitbot - where BitBot by-default keeps config files, database files and rotated log files. Github, Gitea and GitLab web hooks I run BitBot as-a-service on most popular networks (willing to add more networks!) and offer github/gitea/gitlab webhook to IRC notifications for free to FOSS projects. Contact me for more information!
  2. Version 1.0.0

    0 downloads

    The Kitteh IRC Client Library (KICL) is a powerful, modern Java IRC library built with NIO using the Netty library to maximize performance and scalability.
  3. Version 1.0.0

    0 downloads

    Tenyks is a computer program designed to relay messages between connections to IRC networks and custom built services written in any number of languages. More detailed, Tenyks is a service oriented IRC bot rewritten in Go. Service/core communication is handled by ZeroMQ 4 PubSub via json payloads. The core acts like a relay between IRC channels and remote services. When a message comes in from IRC, that message is turned into a json data structure, then sent over the pipe on a Pub/Sub channel that services can subscribe to. Services then parse or pattern match the message, and possibly respond back via the same method. This design, while not anything new, is very flexible because one can write their service in any number of languages. The current service implementation used for proof of concept is written in Python. You can find that here. It's also beneficial because you can take down or bring up services without the need to restart the bot or implement a complicated hot pluggable core. Services that crash also don't run the risk of taking everything else down with it. Installation and whatnot Building Current supported Go version is 1.7. All packages are vendored with Godep and stored in the repository. I update these occasionally. Make sure you have a functioning Go 1.7 environment. Install ZeroMQ4 (reference your OSs package install documentation) and make sure libzmq exists on the system. go get github.com/kyleterry/tenyks cd ${GOPATH}/src/github.com/kyleterry/tenyks make - this will run tests and build sudo make install - otherwise you can find it in ./bin/tenyks cp config.json.example config.json Edit config.json to your liking. Uninstall Why would you ever want to do that? cd ${GOPATH}/src/github.com/kyleterry/tenyks sudo make uninstall Docker There is a Docker image on Docker hub called kyleterry/tenyks. No configuration is available in the image so you need to use it as a base image. You can pass your own configuration in like so: FROM kyleterry/tenyks:latest COPY my-config.json /etc/tenyks/config.json Then you can build your image: docker build -t myuser/tenyks . and run it with: docker run -d -P --name tenyks myuser/tenyks. Binary Release You can find binary builds on bintray. I cross compile for Linux {arm,386,amd64} and Darwin {386,amd64}. Configuration Configuration is just json. The included example contains everything you need to get started. You just need to swap out the server information. cp config.json.example ${HOME}/tenyks-config.json Running tenyks ${HOME}/tenyks-config.json If a config file is excluded when running, Tenyks will look for configuration in /etc/tenyks/config.json first, then ${HOME}/.config/tenyks/config.json then it will give up. These are defined in tenyks/tenyks.go and added with ConfigSearch.AddPath(). If you feel more paths should be searched, please feel free to add it and submit a pull request. Vagrant If you want to play right fucking now, you can just use vagrant: vagrant up and then vagrant ssh. Tenyks should be built and available in your $PATH. There is also an IRC server running you can connect to server on 192.168.33.66 with your IRC client. Just run tenyks & && disown from the vagrant box and start playing. Testing I'm a horrible person. There aren't tests yet. I'll get right on this.... There are only a few tests. Builtins Tenyks comes with very few commands that the core responds to directly. You can get a list of services and get help for those services. tenyks: !services will list services that have registered with the bot through the service registration API.. tenyks: !help will show a quick help menu of all the commands available to tenyks. tenyks: !help servicename will ask the service to sent their help message to the user. Services Libraries tenyksservice (Python) quasar (Go) To Services Example JSON payload sent to services: { "target":"#tenyks", "command":"PRIVMSG", "mask":"unaffiliated/vhost-", "direct":true, "nick":"vhost-", "host":"unaffiliated/vhost-", "full_message":":vhost-!~vhost@unaffiliated/vhost- PRIVMSG #tenyks :tenyks-demo: weather 97217", "user":"~vhost", "from_channel":true, "connection":"freenode", "payload":"weather 97217", "meta":{ "name":"Tenyks", "version":"1.0" } } To Tenyks for IRC Example JSON response from a service to Tenyks destined for IRC { "target":"#tenyks", "command":"PRIVMSG", "from_channel":true, "connection":"freenode", "payload":"Portland, OR is 63.4 F (17.4 C) and Overcast; windchill is NA; winds are Calm", "meta":{ "name":"TenyksWunderground", "version":"1.1" } } Service Registration Registering your service with the bot will let people ask Tenyks which services are online and available for use. Registering is not requires; anything listening on the pubsub channel can respond without registration. Each service should have a unique UUID set in it's REGISTER message. An example of a valid register message is below: { "command":"REGISTER", "meta":{ "name":"TenyksWunderground", "version":"1.1", "UUID": "uuid4 here", "description": "Fetched weather for someone who asks" } } Service going offline If the service is shutting down, you should send a BYE message so Tenyks doesn't have to timeout the service after PINGs go unresponsive: { "command":"BYE", "meta":{ "name":"TenyksWunderground", "version":"1.1", "UUID": "uuid4 here", "description": "Fetched weather for someone who asks" } } Commands for registration that go to services Services can register with Tenyks. This will allow you to list the services currently online from the bot. This is not persistent. If you shut down the bot, then all the service UUIDs that were registered go away. The commands sent to services are: { "command": "HELLO", "payload": "!tenyks" } HELLO will tell services that Tenyks has come online and they can register if they want to. { "command": "PING", "payload": "!tenyks" } PING will expect services to respond with PONG. List and Help commands are coming soon. Lets make a service! This service is in python and uses the tenyks-service package. You can install that with pip: pip install tenyksservice. from tenyksservice import TenyksService, run_service, FilterChain class Hello(TenyksService): irc_message_filters = { 'hello': FilterChain([r"^(?i)(hi|hello|sup|hey), I'm (?P<name>(.*))$"], direct_only=False), # This is will respond to /msg tenyks this is private 'private': FilterChain([r"^this is private$"], private_only=True) } def handle_hello(self, data, match): name = match.groupdict()['name'] self.logger.debug('Saying hello to {name}'.format(name=name)) self.send('How are you {name}?!'.format(name=name), data) def handle_private(self, data, match): self.send('Hello, private message sender', data) def main(): run_service(Hello) if __name__ == '__main__': main() Okay, we need to generate some settings for our new service. tenyks-service-mkconfig hello >> hello_settings.py Now lets run it: python main.py hello_settings.py If you now join the channel that tenyks is in and say "tenyks: hello, I'm Alice" then tenyks should respond with "How are you Alice?!". More Examples There is a repository with some services on my Github called tenyks-contrib. These are all using the older tenyksclient class and will probably work out of the box with Tenyks. I'm going to work on moving them to the newer tenyks-service class. A good example of something more dynamic is the Weather service.
  4. Version 1.0.0

    0 downloads

    A pluggable irc client library based on python's asyncio. Requires python 3.5+ Python 2 is no longer supported, but if you don't have a choice you can use an older version: $ pip install "irc3<0.9" Source: https://github.com/gawel/irc3/ Docs: https://irc3.readthedocs.io/ Irc: irc://irc.freenode.net/irc3 (www) I've spent hours writing this software, with love. Please consider tipping if you like it: BTC: 1PruQAwByDndFZ7vTeJhyWefAghaZx9RZg ETH: 0xb6418036d8E06c60C4D91c17d72Df6e1e5b15CE6 LTC: LY6CdZcDbxnBX9GFBJ45TqVj8NykBBqsmT
  5. Version 1.0.0

    0 downloads

    Limnoria is a multipurpose Python IRC bot, designed for flexibility and robustness, while being easy to install, set up, and maintain. It aims to be an adequate replacement for most existing IRC bots. It includes a very flexible and powerful ACL system for controlling access to commands, an equality powerful configuration system to customize your bot, as well as more than 60 builtin plugins providing around 400 actual commands. There are also dozens of third-party plugins written by dozens of independent developers, and it is very easy to write your own with only basic knowledge of Python. It is the successor of Supybot since 2010 and provides many new features, but keeps full compatibility with existing configurations and plugins. Support Documentation If this is your first install, there is an install guide. You will probably be pointed to it if you ask on IRC how to install Limnoria. TL;DR version: sudo apt-get install python3 python3-pip python3-wheel pip3 install --user limnoria # You might need to add $HOME/.local/bin to your PATH supybot-wizard There is extensive documentation at docs.limnoria.net and at Gribble wiki. We took the time to write it; you should take the time to read it. IRC channels In English If you have any trouble, feel free to swing by #limnoria on Libera.Chat and ask questions. We'll be happy to help wherever we can. And by all means, if you find anything hard to understand or think you know of a better way to do something, please post it on the issue tracker so we can improve the bot! In Other languages Only in French at the moment, located at #limnoria-fr on Libera.Chat.
  6. Version 1.0.0

    0 downloads

    Introduction Sopel is a simple, lightweight, open source, easy-to-use IRC Utility bot, written in Python. It's designed to be easy to use, run and extend. Installation Latest stable release On most systems where you can run Python, the best way to install Sopel is to install pip and then pip install sopel. Arch users can install the sopel package from the [community] repository, though new versions might take slightly longer to become available. Failing both of those options, you can grab the latest tarball from GitHub and follow the steps for installing from the latest source below. Latest source First, either clone the repository with git clone git://github.com/sopel-irc/sopel.git or download a tarball from GitHub. Note: Sopel requires Python 3.7+ to run. In the source directory (whether cloned or from the tarball) run pip install -e .. You can then run sopel to configure and start the bot. Database support Sopel leverages SQLAlchemy to support the following database types: SQLite, MySQL, PostgreSQL, MSSQL, Oracle, Firebird, and Sybase. By default Sopel will use a SQLite database in the current configuration directory, but alternative databases can be configured with the following config options: db_type, db_filename (SQLite only), db_driver, db_user, db_pass, db_host, db_port, and db_name. You will need to manually install any packages (system or pip) needed to make your chosen database work. Note: Plugins not updated since Sopel 7.0 was released might have problems with database types other than SQLite (but many will work just fine). Adding plugins The easiest place to put new plugins is in ~/.sopel/plugins. Some newer plugins are installable as packages; search PyPI for these. Many more plugins written by other users can be found using your favorite search engine. Some older, unmaintained plugins are available in the sopel-extras repository, but of course you can also write your own. A tutorial for creating new plugins is available on Sopel's website. API documentation can be found online at https://sopel.chat/docs/, or you can create a local version by running make docs. Further documentation The official website includes such valuable information as a full listing of built-in commands, tutorials, API documentation, and other usage information. Questions? Join us in #sopel on Libera Chat. Donations We're thrilled that you want to support the project! You can sponsor Sopel here on GitHub or donate through Open Collective. Any donations received will be used to cover infrastructure costs, such as our domain name and hosting services. Our main project site is easily hosted by Netlify, but we are considering building a few new features that would require more than static hosting. All project-related expenses are tracked on our Open Collective profile, for transparency.
  7. coders-irc_Bot

    botnix

    Botnix - A highly modular perl bot for IRC. Botnix is a highly modular, highly portable IRC bot designed to be connected to multiple networks at any one time. It is lightweight, fast and expandable, written in Perl. Botnix supports SSL, IPv6 and proxies, and is currently in beta stages of development. Many modules are already tested and working, such as modules to imitate an InfoBot, or to track when users were last seen. You can download it from our subversion repository or visit our forums below. There is a sizeable amount of documentation on our wiki, and more documentation will follow as it is needed. What is required to run Botnix? Perl (5.8.0 or above) with the Socket6 module and Digest::SHA1 module (bundled with perl or available from CPAN). For SSL support you also require the Net::SSLeay module. I can't get ActiveState perl to install Socket6 through PPM! A lot of the time you will find that PPM fails to install Socket6 (simply because ActiveState broke the package!). If you have problems you should install it with one of the following commands: ppm install http://www.botnix.org/ppm/Socket6.ppd ppm install http://www.open.com.au/radiator/free-downloads/Socket6.ppd These are precompiled binary packages which will work in ActiveState perl 5.8 and will run correctly. If one command fails, this is because the required tarballs are not on the server, please try the next command in this list. If you wish to mirror this directory structure, you may find a zip of the /ppm directory here. What is required for Gentoo users to run Botnix? For the very lazy: emerge Socket6 Digest-SHA1 Net-SSLeay. Do i need the Socket6 module even if my machine does not have ipv6 enabled? Yes. This is essentially a wrapper over Socket, so it is still required. It should still compile, so long as your operating system has the neccessary headers (e.g. if it's newer than around five years old... which it should be unless you like to run insecure software!) Can i have more than one logging module at a time? Yes, why not? 🙂 Remember to configure all the modules you use. Does the DCC module depend on the CTCP module, with DCC technically being a CTCP? No, we decided that this would be a somewhat pointless and annoying dependency. Why Perl? Because we felt like it. No, really... Perl is a text processing language, and IRC is essentially just text. Compared to high level languages like C and object languages like Python, Perl is able to process IRC text in a much more efficient manner, plus its support for regexps and its portability are second to none. Can i link my botnix bots together? Not yet. Why isn't my bot responding to any commands? You probably haven't loaded the modules/irc/cli.pm module. This module is essential if you want to issue any commands on channel or in private message. Please see the Annotated Example Config for more information. Are passwords case sensitive? Yes, also for the time being, network names are also case sensitive. I have the global owner flag, why won't the bot op me? In botnix, no flag should ever indirectly give the privilages of another flag. Therefore even if you are the bot owner you must add the 'operator' flag for yourself (addflags handle * * operator) for the bot to be able to op you. Where does botnix store its data? Botnix stores its data in two files which are specified in your configuration file. These two files are the userfile (usually with the extension .uf) and the store file (usually with the extension .store). All modules store their data in the store file, centralizing the information. Both are plaintext, however it is not recommended you edit these by hand unless you absolutely must, otherwise you may corrupt your settings. Can the bot join completely different channels on different networks? Yes, you could for example connect your bot to both ircnet and efnet, and have the bot on #one on ircnet and #two on efnet, or even on #three on both, at the same time. There are no real limitations on what can be joined and where. Do i have to use the same nick for my bot on all networks? No, you can configure a different nick, ident and GECOS (fullname field) for every network you connect your bot to. What does botnix support? Because botnix is beta software it does not yet have a full feature set. However it does support a large number of features already based upon what was learned from previous projects such as WinBot and IRC Defender, as shown below: Support for both IPv4 and IPv6 connections Support for HTTP Proxies SSL-encrypted IRC connections (over both IPv4 and IPv6) SQL Support Channel Mirroring (relay channel text between multiple networks) Support for multiple network connections in one bot process Modular support for CTCP Modular support for DCC CHAT Modular bot channel commands such as .OP and .BAN Sticky-ban support Powerful API with nonblocking sockets, timers and events Simplified bind-style configuration file format Mode queueing (merge several +b or +o into one line) Support for unrealircd founder/protect/halfop plus many InspIRCd modes and features Userfile and user manipulation with login/logout Local and global user flags (global to a network or to all networks) Mode enforcement (modelock) Channel key management 'Floating' channel limits Modular command interpreter (load/unload the ability to issue commands in message or on channel etc) Flood protection Clone protection Support for telnet control of the bot (via a module) Why is botnix spamming my console? You didn't load a logging module. You must load and configure at least one logging module. If you do not want to log you should probably load the 'null' logging module, modules/log/null.pm. Why did you name this project 'botnix'? What does it mean? The name just sounded kind of cool. No, really. Actually the name has two origins... Firstly, it comes from a character from the video game "Sonic The Hedgehog", called Dr Robotnik. This project being an IRC robot, it seemed perfectly apt. Not just that, but, if you take the two words bot and unix.... well, you get the idea... When i load botnix on windows, it says its going into the background, but then it hangs! It hasn't actually hung. If you have text like this in your command prompt: Botnix 0.4.5 Initializing: STORE MODULES CONFIG USERS Done, switching to background using SW_HIDE... Then all you need to do is press enter, and you will return to the command prompt again. The bot will continue to run in the background. On windows, when i close the window that started botnix, it takes botnix with it! There is nothing we can do about this. You should probably bug the perl win32 maintainers and get them to fix the severely broken fork emulation on windows which stops perl programs forking normally. If this bugs you, find another use for the console after you spawn botnix. Fire up lynx or something. Will botnix let me connect the same bot multiple times to the same network with different nicks? Yes, but why would you want to do this legitimately? To do this, simply give each connection a different network name. botnix-master.zip
  8. ;remotes ;usage: /agreet <nick> <message> ;will only activate one every 5 seconds for each nick. remove the set line to disable it. on *:join:#coders-irc-lounge: { var %e $+($nick,.txt) if ($read(%e) && !%flood. [ $+ [ $nick ] ]) { echo -a $readn msg # $read(%e, $rand(1,$readn)) set -u5 $+(%,flood,.,$nick) 1 } } alias agreet { write -a $+($1,.txt) $2- }
  9. IRC × OAuth 2.0 2022-09-13 In the past few days I’ve been working on better integrating IRC with OAuth 2.0. In a nutshell, my goal is to make IRC clients obtain a token by interacting with an OAuth 2.0 server, and then use that token to authenticate with the IRC server. This effort has resulted in various patches for meta.sr.ht’s OAuth 2.0 server, for the soju IRC bouncer and for the gamja & goguma IRC clients. Read more here
  10. I've been playing with Bot Manager v2.2 by entropy Its amazing all what you need for a bot control in your room and server. I congradulate him on a well done job on this. I have it running on my server and in my room #coders-irc-lounge 0n irc.coders-irc.net 6667 This addon has many exceptiona l feature and commands if you looking to download it get it here or mircscripts
  11. Beta v7.71.1275 changes: 1.Item 1, https://forums.mirc.com/ubbthreads.php/topics/270820 2.Item 2, changed. 3.Item 3, https://forums.mirc.com/ubbthreads.php/topics/270870 These test scripts have been added to my if/while/bracket/ separator unit tests. 4.Item 4, https://forums.mirc.com/ubbthreads.php/topics/270870 5.Item 5, https://forums.mirc.com/ubbthreads.php/topics/270870 6.Item 6, https://forums.mirc.com/ubbthreads.php/topics/270888 7.Item 7, https://forums.mirc.com/ubbthreads.php/topics/270837 https://forums.mirc.com/ubbthreads.php/topics/270785 8.Item 8, updated. 9.Item 9, https://forums.mirc.com/ubbthreads.php/topics/270754 Experimental. See forum post for details. 10.Item 10, https://forums.mirc.com/ubbthreads.php/topics/270754 Now automatically detects an overflow and switches to big float for large numbers. Changes: 1.Changed /nick, /mnick, /anick, to override /server -i local settings when not connected to a server. 2.Changed $wrap() to allow an empty switch parameter. 3.Fixed script parser bug when handling non-while/if { } brackets. 4.Fixed /var parsing bug in single-line scripts split across multiple lines using combinations of {} and |. 5.Fixed nested single-line if/while bug. 6.Fixed scripts editor not allowing multiple empty alias files. 7.Fixed scripts editor Listen and View menu bugs when in the users/variables sections. 8.Updated zlib library to v1.2.13. 9.Added support for big float calculations using MAPM library. This can be enabled with the command /bigfloat [on|off] for the whole script or by using a %var.bf variable name to enable it for a command/identifier. The $bigfloat identifier can be used to check the current bigfloat state. 10.Extended $base() to handle big numbers. download here
  12. This is a forum request made by toclafane1 who wants a script to be able to report the info about a snippet or script's title, likes, average score, date added, and last updated via its link when posted.> check out www.hawkee.com/snippet/9097/ Title: RottenTomato Movie Search Likes: 2 like(s) Average Score: 6.5 (of 2 scores) Date Added: Oct 23, 2011 Last Updated: Oct 24, 2011> let's see about this link: http://www.hawkee.com/scripts/23905971/ Title: Password Character Picker Developer: Jonesy44 Likes: 0 like(s) Date Added: Nov 12, 2011 ```mirc on *:exit: if ($isfile(hawkee)) .remove hawkee on *:sockclose:hawkeesnippet_*:{ .play -c $token($sock($sockname).mark,4,32) hawkee 2000 } on *:sockopen:hawkeesnippet_*:{ if (!$sockerr) { write -c hawkee tokenize 32 $sock($sockname).mark var %hawkee = sockwrite -nt $sockname %hawkee GET $2 HTTP/1.0 %hawkee Host: $+($sock($sockname).addr,$str($crlf,2)) %hawkee Connection: close } else $3-4 $sock($sockname).addr is having a technical difficulty. Try again later. } on $*:text:/(http\072\/\/)?w{3}\.hawkee\.com(\/s(nippet|cripts).*\/)/:#:{ if (!$play(#)) { var %hawkeee = $+(hawkeesnippet_script,$site,$str($ticks,3)) var %hawkeeinfo = $remove($+($regml(1),$regml(2)),http://) sockopen %hawkeee www.hawkee.com 80 sockmark %hawkeee $!bvar(&hawkee,1-).text %hawkeeinfo .msg # } } on *:sockread:hawkeesnippet_*:{ tokenize 32 $sock($sockname).mark | sockread &hawkee if (!$sockerr) { var %d = /(?s)(Description)(\s*\K.+?(?=\s*).*)/ var %t = /(.*)-/, %l = /(\d+)<\/b>( like\(s\))<\/span>/ var %s = /px">(.*)<\/b>.*(\(.*\))<\/span>/, %a = /(.*)/ var %lu = /(?s)Last Updated <\/td>(\s*\K.+?(?=\s*).*)/ if ($regex([ [ $1 ] ],%t)) { write hawkee $3-4 $+($chr(2),Title:,$chr(2)) $regml(1) } if ($regex([ [ $1 ] ],/-bottom: 6px;">(.*) on *:sockclose:hawkeesnippet_*:{ .msg %HawkeeC [14TiTLE] $+(7,%Hawkee_Title,) $+($iif(%Hawkee_Score,$+(15,$chr(40),,$v1)),$iif(%Hawkee_Likes,$+($chr(32),14-4#14-) $v1 $+(3like,$iif($v1 > 1,s),15,$chr(41),))) 14Added: $iif(%Hawkee_DateA != %Hawkee_DateU,$v1 5Updated: $v2,$v1) $iif(%Hawkee_Devl,14by: $v1) | unset %Hawkee* } on *:sockopen:hawkeesnippet_*:{ if ($sockerr) { $3-4 $sock($sockname).addr is having a technical difficulty. Try again later. | return } tokenize 32 $sock($sockname).mark var %hawkee = sockwrite -nt $sockname %hawkee GET $2 HTTP/1.0 %hawkee Host: $+($sock($sockname).addr,$str($crlf,2)) %hawkee Connection: close } on $*:text:/(http\072\/\/)?w{3}\.hawkee\.com(\/s(nippet|cripts).*\/)/:#:{ if (!%Hawkee) { set -u30 %HawkeeC # var %hawkeee = $+(hawkeesnippet_script,$site,$str($ticks,3)) var %hawkeeinfo = $remove($+($regml(1),$regml(2)),http://) sockopen %hawkeee www.hawkee.com 80 sockmark %hawkeee $!bvar(&hawkee,1-).text %hawkeeinfo .msg # } } on *:sockread:hawkeesnippet_*:{ tokenize 32 $sock($sockname).mark | sockread &hawkee if ($sockerr) { $3-4 $sock($sockname).addr is having a technical difficulty. Try again later. | return } ;******************************************************************************************************** var %d = /(?s)(Description)</h1>(\s*\K.+?(?=\s*).*)/ var %t = /<title>(.*)-/, %l = /<b>(\d+)<\/b>( like\(s\))<\/span>/ var %s = /px"><b>(.*)<\/b>.*(\(.*\))<\/span>/, %a = /(.*)</b></td>/ var %lu = /(?s)Last Updated&nbsp;<\/td>(\s*\K.+?(?=\s*).*)/ ;******************************************************************************************************** if ($regex([ [ $1 ] ],%t)) { set %Hawkee_Title $regml(1) } if ($regex([ [ $1 ] ],/-bottom: 6px;">(.*)</div>/)) { set %Hawkee_Devl $regml(1) } if ($regex([ [ $1 ] ],%l)) { set %Hawkee_Likes $regml(1) } if ($regex([ [ $1 ] ],%s)) { set %Hawkee_Score $+($regml(1),14/10) } if (date added isin [ [ $1 ] ]) && ($regex($v2,%a)) { set %Hawkee_DateA $token($regml(1),-1,62) } if ($regex([ [ $1 ] ],%lu)) { set %Hawkee_DateU $token($token($regml(1),3,62),1,60) } if ($regex([ [ $1 ] ],/6px;"><b>(\S+ \d+, \d{4})/)) { set %Hawkee_DateA $regml(1) } if ($regex([ [ $1 ] ],/center;">(\S+ \d+, \d{4})/)) { set %Hawkee_DateU $regml(1) } ;******************************************************************************************************** }
  13. This is a forum request made by maria who wishes to have the latest comment checked via reddit.com. The script will then send the info to a channel with its title, short link and by whom. I thought I'd make this a snippet submission to benefit those who find it useful or usable. Usage: right-click on your channel or nick list to toggle "Reddit On" and "Reddit Off" to get started. Edit: I've updated the script to include the latest post as requested by maria previously. alias -l reddit { var %i = 1, %socks = reddit reddit2 while ($gettok(%socks,%i,32)) { var %v1 = $v1 if ($sock(%v1)) sockclose $v1 sockopen %v1 www.reddit.com 80 sockmark %v1 msg $1 inc %i } } alias -l trans { return $replace($1,&lt;,<,&gt;,>,&quot;,",&nbsp;,$chr(160),&amp;,&,&amp;#39;,') } on *:sockclose:reddit*:{ if ($sock($sockname).name == reddit) { if ($hget(data2)) && ($hget(data3)) && ($hget(data4)) { $sock($sockname).mark $+($chr(2),Latest Comment:,$chr(2)) $& [ [ $remove($+($hget(data2,1).item,$chr(32),$hget(data2,1).data),r/) ] ] $sock($sockname).mark $+($chr(2),Latest Post:,$chr(2)) $& $+($hget(data3,1).item,$chr(32),$hget(data3,1).data) - $& $hget(data4,1).item by $hget(data5,1).item hfree -w data* } } else { if ($sock(reddit2)) sockclose $v1 sockopen reddit2 www.reddit.com 80 sockmark reddit2 msg $1 } } menu channel,nicklist { Reddit .ON { if (!%reddits) { set -e %reddits $$?"Which Reddit to Watch?" set -e %reddittime $$?"How often do you want the latest post checked $& and sent to the channel in seconds?" $+(.timer,#,$network) 0 %reddittime reddit # echo 2 # * Reddit Set for: $+($chr(2),%reddits) echo 2 # * Time Interval in Seconds: $+($chr(2),%reddittime) if (%true) unset $v1 } else echo 4 # * Reddit is Already Switched On! } .OFF { if (%reddits) { $+(.timer,#,$network) off echo 2 * Reddit Has Been Turned Off! unset %reddit* %true } else echo 4 # * Reddit is Already Switched Off! } } on *:sockopen:reddit*:{ if ($sockerr) { echo 4 $gettok($sock(reddit).mark,2,32) Error Connecting to $sock(reddit).addr sockclose reddit } if ($sock($sockname).name == reddit) { var %reddit = sockwrite -nt reddit %reddit GET $+(/r/,%reddits,/comments?limit=1) HTTP/1.0 %reddit Connection: close %reddit Host: $+($sock(reddit).addr,$str($crlf,2)) } else { var %reddit2 = sockwrite -nt reddit2 %reddit2 GET $+(/r/,%reddits,/new.json?sort=new) HTTP/1.0 %reddit2 Connection: close %reddit2 Host: $+($sock(reddit).addr,$str($crlf,2)) } } on *:sockread:reddit*:{ if ($sockerr) { echo 4 $gettok($sock(reddit).mark,2,32) Error Reading $sock(reddit).addr sockclose reddit } if ($sock($sockname).name == reddit) { sockread &reddit var %g = $regsubex($bvar(&reddit,1-).text,/\/r\/|&#\d+;/g,) if ($regex(%g,/<\/div><\/form><ul class="flat-list buttons">(.*)/)) { hadd -m data $+($sock(reddit).addr,/tb/,$gettok($iif($regex($regml(1),$& /\/comments\/(\S+)\//),$trans($regml(1))),1,47)) } if ($regex(%g,/class="title" rel="nofollow" >(.*)class="author/)) { hadd -m data2 $gettok($trans($regml(1)),1,60) - $& $!+($chr(3),12,$hget(data,1).item,$chr(3)) by $+($chr(3),05,$& $iif($regex($regml(1),/\/user\/(\S+)"/),$regml(1))) } } else { sockread &reddit2 var %g2 = $bvar(&reddit2,1-).text if ($regex(%g2,/"title"\: "(.*)"/)) { hadd -m data3 $gettok($trans($regml(1)),1,34) } if ($regex(%g2,/"id"\: "(.*)"/)) { hadd -m data4 $+($chr(3),12,$gettok($+(http://redd.it/,$& $trans($regml(1))),1,34),$chr(3)) sockclose $sockname } if ($regex(%g2,/"author"\: "(.*)"/)) { hadd -m data5 $+($chr(3),05,$gettok($regml(1),1,34)) } } } on me:*:join:#:{ if (%true) notice $me Reddit has been toggled off. Right-click on $& the nicklist or channel to toggle it on. | unset %true } on *:disconnect: if (%reddits) $+(.timer,#,$network) off | set -e %true 1 on me:*:part:#: if (%reddits) $+(.timer,#,$network) off | set -e %true 1 on *:kick:#:{ if ($knick == $me) && (%reddits) $+(.timer,#,$network) off set -e %true 1 } on *:quit:{ if ($nick == $me) && (%reddits) { var %c = 1 while ($comchan($me,%c)) { $+(.timer,$v1,$network) off set -e %true 1 inc %c } } }
  14. This work below is yet another forum request that I've decided to submit as a part of my snippet collection. For those who find this snippet useful, It's for the bot client, and the trigger is either !facts, @facts, .facts or !jokes, @jokes, .jokes. on $*:text:/^[!@.](fact|joke)s$/iS:#:{ if (!%f) { inc -u3 %f var %s = $+(rjf,$str($ticks,2),$site) if ($sock(%s)) sockclose $v1 sockopen %s www.randomfunfacts.com 80 sockmark %s .msg # $regml(1) } } on *:sockclose:rjf*:{ tokenize 32 $sock($sockname).mark var %s = $+(rjf,$str($ticks,2),$site) if ($sock(%s)) sockclose $v1 sockopen %s www.jokesclean.com 80 sockmark %s $1-2 } on *:sockopen:rjf*:{ tokenize 32 $sock($sockname).mark if ($sockerr) { $1-2 Error: Connection Issue... sockclose $sockname } else { if ($3 == fact) { var %rjf = sockwrite -nt $sockname %rjf GET / HTTP/1.1 %rjf Connection: close %rjf Host: $+($sock($sockname).addr,$str($crlf,2)) } else { var %rjf = sockwrite -nt $sockname %rjf GET /OneLiner/Random/ HTTP/1.0 %rjf Host: $+($sock($sockname).addr,$str($crlf,2)) } } } on *:sockread:rjf*:{ tokenize 32 $sock($sockname).mark if ($sockerr) { $1-2 Error: Issues in Reading... sockclose $sockname halt } goto $iif($3 == fact,fact,joke) :fact sockread &rjf var %info = $regsubex($bvar(&rjf,1-).text,/<[^>]*>|\t$& $+ RLOpenInNewWindow|"1";|var RLRepeatKeywords/g,$chr(32)) if ($gettok($replace(%info,&nbsp;,$chr(94)),2,94)) { $1-2 $remove($gettok($v1,11-,32),24c6) sockclose $sockname | halt :joke var %jokes sockread %jokes if ($regex(%jokes,/(.*)<\/font><\/p>/)) { $sock($sockname).mark $replace($gettok($regml(1),3-,62),&nbsp;,$chr(32)) sockclose $sockname } halt } }
  15. Version 1.7.0

    1 download

    Basically its like a table top RPG for mIRC. It also has a feature so that you can download addons (addons still in production as of 7/03/2010) to customize your RPGenerator to suit the needs of your RPG character. Right now its current motive is to promote my RPG DarkCastle RPG ( http://darkcastle.darkbb.com ) and to bring a new level of RPG to IRC. Please enjoy. Addons will be available soon! Also PLEASE read the ReadMe file! It contains loading instructions that MUST be followed for proper installation of the RPGenerator. Also, requires two players! If you'd like to play me I can be found in my RPG (link above.) NOTE: Please do not hack, edit, or mod this game. If you mod it I will remove it.
  16. MASS JOIN KICKER II Stomps out large amounts of clones/spam bots from entering your channel. Triggered at 7 joins in 5 seconds, it automatically locks down the channel and kicks out all the clones/spam bots that come in. Just copy and paste to your remotes After loading if it asks to run initialization commands, click "Yes". Then right click and go down to MASS JOIN KICKER II and it can be toggled on and off. ;MASS JOIN KICKER II ;By Neo Nemesis ;Contributors: Jethro_ ;Thanks to: Hawkee Forums on *:START: { massjoin } on *:LOAD: { massjoin } on *:CONNECT: { massjoin } alias -l massjoin { if ($hget(massjoin) == $null) { hmake massjoin 750 } } alias -l abmj { echo -a 12,1*!14 MASS JOIN KICKER II 12!* echo -a 12,1*!14 By Neo Nemesis 12!* echo -a 12,1*!14 http://mirc-deluxe.webs.com 12!* } on @*:JOIN:#: { if (%massjoin == $true) { set -u15 %mj1 $addtok(%mj1,$nick,44) hinc -mu5 massjoin JOIN 1 if ($hget(massjoin,JOIN) >= 7) { if (%modechan != $true) { mode $chan +im set -u15 %modechan $true set -u15 %mj2 1 notice $chan 12*! 4MASS JOIN DETECTED12 !* 2- 12channel locked down for4 5-7 minuets.12 Sorry for any inconvenience this may cause. .timermjs 1 300 mode $chan -im } while (%mj2 <= $numtok(%mj1,44)) { if ($gettok(%mj1,%mj2,44) ison $chan) && ($gettok(%mj1,%mj2,44) !isreg $chan) { if (%mj2 <= 8) { .timermj $+ %mj2 -m 1 $calc(780 * %mj2 kick $chan $gettok(%mj1,%mj2,44) 2MASS JOIN KICKER II - By Neo Nemesis } elseif (%mj2 > 8) { .timermj $+ %mj2 -m 1 $calc(897 * %mj2) kick $chan $gettok(%mj1,%mj2,44) 2MASS JOIN KICKER II - By Neo Nemesis } } inc %mj2 } } } } menu status,query,nicklist,channel { MASS JOIN KICKER II - $iif(%massjoin = $true,ON,OFF) .ON:/set %massjoin $true .OFF:/set %massjoin $false .About:/abmj }
  17. Using mIRC's raw numeric events, this script modifies the information that is shown when you do /whois or /whowas. Shows more info on the user. DeluXe Whois II - By Neo Nemesis ;whois script raw 311:*: { echo -a $+ $color(whois) $+ - | echo -a 12*!*14 DeluXe Whois II 12*!*4 ( $+ $2 $+ )12 *!* | echo -a 4Hostmask: $+ $color(whois) *!*@ $+ $4 $+ | echo -a 4E-mail: $+ $color(whois) $3 $+ | echo -a 4Fullname: $+ $color(whois) $6- $+ | halt } raw 307:*: { echo -a 4Registered: $+ $color(whois) $4- $+ | halt } raw 319:*: { echo -a 4Channels: $+ $color(whois) $3- $+ | halt } raw 312:*: { if (%whowas != $true) { echo -a 4Server: $+ $color(whois) $3 $+ | echo -a 4IRCd: $+ $color(whois) $4- $+ | halt } | elseif (%whowas == $true) { echo -a 4Server: $+ $color(whois) $3 | echo -a 4Date: $+ $color(whois) $4- | unset %whowas | halt } } raw 317:*: { echo -a 4Idle time: $+ $color(whois) $duration($3) $+ | echo -a 4Sign on: $+ $color(whois) $asctime($4) $+ | halt } raw 313:*: { echo -a 4IRCop: $+ $color(whois) $5- $+ | halt } raw 310:*: { echo -a 4Helpful: $+ $color(info) $3- $+ | halt } raw 309:*: { echo -a 4Language: $+ $color(info) $3- $+ | halt } raw 325:*: { echo -a 4Language Filter: $+ $color(info) $3- $+ | halt } raw 301:*: { echo -a 4Away: $+ $color(info) $3- $+ | halt } raw 318:*: { echo -a 12*!*14 End of /whois 12*!* | echo -a $+ $color(whois) $+ - | halt } raw 314:*: { %whowas = $true | echo -a $+ $color(whois) $+ - | echo -a 12*!*14 DeluXe Whowas 12*!*4 ( $+ $2 $+ )12 *!* | echo -a 4Hostkmask: $+ $color(whois) *!*@* $+ $4 $+ | echo -a 4E-mail: $+ $color(whois) $3 $+ | echo -a 4Fullname: $+ $color(whois) $6- | halt } raw 406:*: { echo -a $+ $color(whois) $+ - | echo -a 12*!*14 $2 there was no such nickname. 12*!* | halt } raw 369:*: { echo -a 12*!*14 End of /whowas 12*!* | echo -a $+ $color(whois) $+ - | halt } raw 344:*: { echo -a 4SSL: $+ $color(whois) $4- $+ | halt } raw 334:*: { if (interests isin $1-) { echo -a 4Interests: $+ $color(whois) $4- $+ } | elseif (location isin $1-) { echo -a 4Location: $+ $color(whois) $4- $+ } | elseif (occupation isin $1-) { echo -a 4Occupation: $+ $color(whois) $4- $+ } | halt } raw 379:*: { echo -a 4User Modes: $+ $color(whois) $6- | halt } raw 671:*: { echo -a 4Secure Connection: $+ $color(whois) $3- | halt } raw 320:*: { echo -a 4Info: $+ $color(whois) $3- | halt } raw 338:*: { echo -a 4IP: $+ $color(whois) $3- | halt } raw 340:*: { echo -a 4IP: $+ $color(whois) $2- | halt }
  18. Updated to version 1.81, fixed the bugs from 1.76 DeluXe MP3 1.81 is a nice MP3 player for your mIRC. It works nicely and doesn't require you moving any MP3 files into a certain directory, and can play mp3 files that are stored anywhere on your computer! It can play only .mp3 format sound files. Has a customizable colour pop-up (for music info) As well as a built in volume control and iconic buttons. It also has a nice "size efficient" look and fits nicely right at the top of your screen, under the toolbar or wherever you want to put it! Much more better than its built-into-the-custom-toolbar counter-part version 1.5 which will be featured in mIRC-DeluXe 1.5.5 (Hopefully to be released soon). Made by request for Shizuma ❤️ Available to everyone, try it out let me know what you think. PLEASE READ THE README!!! FILE LOCATED IN THE ZIP FILE IT CONTAINS SPECIAL LOADING INSTRUCTIONS THAT MUST BE FOLLOWED IN ORDER FOR THE SCRIPT INITIATE PROPERLY. WORKS THE BEST IN C:\mIRC\ Works best on mIRC 6.35 and Windows XP. As for Windows Vista and Windows 7 I am unsure how they will work. Version 1.76 had compatibility problems with Windows Vista for some reason, hopefully those problems were eliminated in 1.81 DeluXeMP3181.zip
  19. ntended for a channel bot. Just copy and paste into remotes. mIRC 6.35+ Gives information on youtube links when posted in the channel, and can now also do YOUTBUE SEARCHES! Triggered when YouTube link is posted in chat.... YouTube Link Info: [15:42] <@Neo-Nemesis> http://www.youtube.com/watch?v=rwY3Ftfdy6M [15:42] <@Boris_III> YouTube Title: Iron Maiden - Killers [15:42] <@Boris_III> YouTube Info: Iron Maiden - Killers Members: Paul Di'Anno - vocals Steve Harris - bass guitar Dave Murray - guitar Adrian Smith - guitar Clive Burr - drums Iron Maiden's o... Triggered when user types !youtube YouTube Search: [15:43] <@Neo-Nemesis> !youtube Iron Maiden [15:43] <@Boris_III> YouTube Search - About 105,000 results - http://www.youtube.com/results?search_query=Iron+Maiden&aq=f [15:43] <@Boris_III> YouTube Official YouTube Channel Link http://www.youtube.com/user/ironmaiden?blend=1 [15:43] <@Boris_III> YouTube Iron Maiden Wasted Years Link: http://www.youtube.com/watch?v=SwB9zg7Tbx8 [15:43] <@Boris_III> YouTube Iron Maiden, ACDC and Guns N Roses 4 LIFE Link http://www.youtube.com/user/benoitiginla12?blend=3 [15:43] <@Boris_III> YouTube aces high Link: http://www.youtube.com/watch?v=4Sam5omG0v0 ;YouTube Info 2.0 ;By Neo Nemesis on *:TEXT:*youtube*:#: { if ($1 == !youtube) { %c.ytb = $chan YouTube search $2- } else { %c.ytb = $chan YouTube $1 } } alias s.YTB.Parse { if (&amp; isin $remove($gettok($1-,2,32),href=",$chr(34))) { return $replace($remove($gettok($remove($1-,<h3>,<b>,</b>,</h3>),2,62),</a),&quot;,$chr(34),&#39;,$chr(39),&amp;,$chr(38)) 4Link15 http://www.youtube.com $+ $gettok($remove($gettok($1-,2,32),href=",$chr(34)),1,38) } else { return $replace($remove($gettok($remove($1-,<h3>,<b>,</b>,</h3>),2,62),</a),&quot;,$chr(34),&#39;,$chr(39),&amp;,$chr(38)) 4Link:15 http://www.youtube.com $+ $remove($gettok($1-,2,32),href=",$chr(34)) } } alias YouTube { if ($1 == search) { ;search unset %ysrc* sockclose s.ytb %ysrch = /results?search_query= $+ $replace($2-,$chr(32),$chr(43)) $+ &aq=f sockopen s.ytb www.youtube.com 80 } else { unset %ytb* sockclose ytb %ytb1 = $remove($1,http://,www.,youtube,.com) sockopen ytb www.youtube.com 80 } } on *:SOCKOPEN:s.ytb: { sockwrite -n $sockname GET %ysrch HTTP/1.1 sockwrite -n $sockname Host: www.youtube.com sockwrite -n $sockname Connection: Close sockwrite -n $sockname Content-Type: text/html sockwrite -n $sockname $crlf } on *:SOCKREAD:s.ytb: { sockread %ysrc.1 if (About <strong> isin %ysrc.1) { .timerYTB6 1 1 msg %c.ytb 1,0You0,4Tube15,1 Search - $remove(%ysrc.1,<strong>,</strong>) - http://www.youtube.com $+ %ysrch %ysrc.3 = $true } if (dir="ltr" title=" isin %ysrc.1) && (%ysrc.3 == $true) { if (%ysrc.2) { inc %ysrc.2 } else { %ysrc.2 = 1 } if (%ysrc.2 <= 4) { .timerYTBb $+ %ysrc.2 1 $calc(%ysrc.2 + $rand(1,2)) msg %c.ytb 1,0You0,4Tube15,1 $s.YTB.Parse(%ysrc.1) } else { sockclose s.ytb } } } on *:SOCKOPEN:ytb: { sockwrite -n $sockname GET %ytb1 HTTP/1.1 sockwrite -n $sockname Host: www.youtube.com sockwrite -n $sockname Connection: Close sockwrite -n $sockname Content-Type: text/html sockwrite -n $sockname $crlf } on *:SOCKREAD:ytb: { sockread %ytb2 if (<meta name=" isin %ytb2) { if (="title" content=" isin %ytb2) { %ytb.title = $remove(%ytb2,<meta name="title" content=",">) .timerYTB1 1 1 msg %c.ytb 1,0You0,4Tube15,1 Title: $replace(%ytb.title,&#39;,$chr(39),&quot;,$chr(34),&amp;,$chr(38)) $+ } if (="description" content=" isin %ytb2) { %ytb.desc = $remove(%ytb2,<meta name="description" content=",">) .timerYTB2 1 2 msg %c.ytb 1,0You0,4Tube15,1 Info: $replace(%ytb.desc,&#39;,$chr(39),&quot;,$chr(34),&amp;,$chr(38)) $+ } if (%ytb.title) && (%ytb.desc) { sockclose ytb } } }
  20. Simple LAZOR script. Variation of the FIRIN' MAH LAZOR snippet. Contributors: Maximus Commands /minilazor Examples: /minilazor This fires the mini lazor at the active window. /minilazor napa182 This fires the mini lazor at napa182 /minilazor #channel This fires the mini lazor at #channel Paste in remotes or in aliases file. If your going to paste in the aliases file, remove the "alias" infront of MiniLazor in the code snippet below. alias MiniLazor { if ($1 == $null) && ($active != status window) { %minilazor = $active } elseif ($1 != $null) { %minilazor = $1 } .timermlzr -m 10 1000 msg %minilazor 7,4./¯/_____________________________\ .timermlzr1 -m 10 1050 msg %minilazor 7,4| 4,7D7,4R4,7. 7,4O4,7C7,4T4,7O7,4G4,7O7,4N4,7A7,4P4,7U7,4S4,7! 7,4B7,4L4,7A7,4R4,7R7,4R4,7R7,4G4,7G7,4G7,4H4,7H7,4!4,4***7,4| .timermlzr2 -m 10 1075 msg %minilazor 7,4.\_\¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯/
  21. Version 1.6.0

    9 downloads

    This is a nice mIRC with many features. Emoticons, Media player, favorite channels manager, notify list manager, query blocker (gate keeper), YouTube support, channel protections, flood protections, custom toolbar/menubar, OP Control Panel, Troll Smasher, Color Cut Script, CD Tray opener and more! mIRC DeluXe has a extensive online help center, and can be accessed with the /dxhelp command. THIS SCRIPT REQUIRES: mIRC v6.35+ Windows XP+ and DirectX 9.0+ without ALL THREE of these items the program will not work. PLEASE READ THE "READ ME 1ST!!!.txt FILE CONTAINED IN THE .rar FILE IT CONTAINS IMPORTANT INSTALLATION INSTRUCTIONS THAT MUST BE FOLLOWED. 1.6.00 Changes: First public release! 3 different editions will shortly be available. Final Fantasy Edition (Special Edition), Professional Killer Edition (Special Edition), DeluXe Lite 1.6 (normal edition). Visit website for more info on editions. Fixed a few more bugs, recoded new Troll Smasher II, recoded black list, added SpamGuard 1.0 (non-lite versions only) added Google Search (non-lite versions only), added new online help center. New graphics! Also added a check for updates feature, that will check for patches or new versions of mIRC DeluXe! 1.5.84 Changes: Fixed the last of the quirks in the favorite channels auto-join (hopefuly), small media player bug fixes, another emoticon bug fix (from error in 1.5.83). And squashed a couple quirks here and there. 1.5.83 Changes: Fixed many media player bugs now DeluXe Media Player 1.05 beta. Fixed menubar bug when selecting mIRC options. Turned on show mode prefix. Fixed YouTube scanner bug. Fixed server notice event. Fixed a few typos. Recoded away system and changed it to DCX.dll instead of MDX.dll. Modified IAL Checker. Recoded Favorite Channels list with DCX instead of MDX. Fixed a feq quirks here and there. 1.5.82 Changes: Fixed emoticon bug, Fixed right click on nick list bug, fixed server list bug in options menu, added YouTube scanner, added multiple file uploader to the Media player, recoded whois script, updated help file, fixed YouTube and Join "nothing on enter" bug, added /j command, fixed (hopefuly) server notice bug, fixed favorite channel auto join bug added CD Tray opener 1.5.81 Changes: Fixed user interface auto-rename bug added enable feature to user interface, set away dialog on desktop, added DNS to active window, added emoticons, fixed OPCP bugs, fixed ¯°º·º°¯ DeluXe Lite ¯°º·º°¯ fullname bug, modified nick list colors, updated help file. 1.5.8 Changes: Fixed Troll Smasher colors bug, fixed user interface auto identify bug. 1.5.7 Changes: Made it "lite" removed RPGenerator added Troll Smasher, fix a few small bugs and removed need for loading screen on start up.
  22. A nice protection script, has channel protections from Deop, Ban, Kick and also has flood protections. ;Protection Script Z31 ;Made for mIRC Script Z31 ;By Neo Nemesis ;Version 1.1 on *:LOAD: { writeini z31.ini main protect on,on,on,on,on,on,2,5,on echo -a $+ $color(info) $+ * Protection Script Z31 Loaded successfuly! Use /protection for the options menu! } menu channel,nicklist,query,status { Protection Script Z31:/protection } alias protection { if (!$1) { dialog -m protect protect } if ($1 == op) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,1,44) } elseif (!$2) { return $gettok($protect.file,1,44) } } if ($1 == kick) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,2,44) } elseif (!$2) { return $gettok($protect.file,2,44) } } if ($1 == ban) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,3,44) } elseif (!$2) { return $gettok($protect.file,3,44) } } if ($1 == massjoin) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,4,44) } elseif (!$2) { return $gettok($protect.file,4,44) } } if ($1 == flood) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,5,44) } elseif (!$2) { return $gettok($protect.file,5,44) } } if ($1 == iflood) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,6,44) } elseif (!$2) { return $gettok($protect.file,6,44) } } if ($1 == timer) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,7,44) } elseif (!$2) { return $gettok($protect.file,7,44) } } if ($1 == num) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,8,44) } elseif (!$2) { return $gettok($protect.file,8,44) } } if ($1 == pmflood) { if ($2) { writeini z31.ini Main Protect $puttok($protect.file,$2,9,44) } elseif (!$2) { return $gettok($protect.file,9,44) } } } alias protect.file { return $readini(z31.ini,Main,Protect) } alias z31.file { return $readini(z31.ini,$1,$2) } alias exempt { if ($1 == chan) { if (!$2) { return $z31.file(exempt,01) } if ($2 == add) { writeini z31.ini exempt 01 $addtok($z31.file(exempt,01),$3,44) } if ($2 == del) { if ($z31.file(exempt,01) == $3) { remini z31.ini exempt 01 } elseif ($z31.file(exempt,01) != $3) { writeini z31.ini exempt 01 $remtok($z31.file(exempt,01),$3,1,44) } } elseif ($2) { if ($z31.file(exempt,01)) { %Z31.1 = 1 while (%Z31.1 <= $numtok($z31.file(exempt,01),44)) { if ($gettok($z31.file(exempt,01),%Z31.1,44) == $2) { return $true } else { inc %Z31.1 } } } return $false } } if ($1 == user) { if (!$2) { return $z31.file(exempt,02) } if ($2 == add) { writeini z31.ini exempt 02 $addtok($z31.file(exempt,02),$3,44) } if ($2 == del) { if ($z31.file(exempt,02) == $3) { remini z31.ini exempt 02 } elseif ($z31.file(exempt,02) != $3) { writeini z31.ini exempt 02 $remtok($z31.file(exempt,02),$3,1,44) } } elseif ($2) { if ($z31.file(exempt,02)) { %Z31.2 = 1 while (%Z31.2 <= $numtok($z31.file(exempt,02),44)) { if ($gettok($z31.file(exempt,02),%Z31.2,44) == $2) { return $true } else { inc %Z31.2 } } } return $false } } if ($1 == host) { if (!$2) { return $z31.file(exempt,03) } if ($2 == add) { writeini z31.ini exempt 03 $addtok($z31.file(exempt,03),$3,44) } if ($2 == del) { if ($z31.file(exempt,03) == $3) { remini z31.ini exempt 03 } elseif ($z31.file(exempt,03) != $3) { writeini z31.ini exempt 03 $remtok($z31.file(exempt,03),$3,1,44) } } elseif ($2) { if ($z31.file(exempt,03)) { %Z31.3 = 1 while (%Z31.3 <= $numtok($z31.file(exempt,03),44)) { if ($gettok($z31.file(exempt,03),%Z31.3,44) == $2) { return $true } else { inc %Z31.3 } } } return $false } } } dialog protect { size -1 -1 445 272 title Protection box "Protections"1, 5 5 140 205 check "DeOP Protection"2, 10 20 98 15 check "Kick Protection"3, 10 35 90 15 check "Ban Protection"4, 10 50 88 15 check "Mass Join Protection"5, 10 65 115 15 check "Flood Protection"6, 10 80 95 15 check "Invite Flood Protection"7, 10 95 128 15 text "Flood trigger:"8, 10 110 80 15 edit ""9, 20 125 40 23 text "Joins/Messages"10, 65 130 75 15 text "in"11, 23 150 15 15 edit ""12, 20 165 40 23 text "seconds."13, 65 170 50 15 check "PM Flood Protection"28, 10 190 113 15 box "Exceptions"14, 150 5 293 265 tab "Channels"15, 155 20 280 245 tab "Users"16 tab "Hostmasks"17 ;tab 15 list 18, 160 45 270 200,vsbar,tab 15 button "Add"19, 160 235 80 23,tab 15 button "Remove"20, 245 235 80 23,tab 15 ;tab 16 list 21, 160 45 270 200,vsbar,tab 16 button "Add"22, 160 235 80 23,tab 16 button "Remove"23, 245 235 80 23,tab 16 ;tab 17 list 24, 160 45 270 200,vsbar,tab 17 button "Add"25, 160 235 80 23,tab 17 button "Remove"26, 245 235 80 23,tab 17 button "Close"27, 35 225 80 23,ok } on *:DIALOG:protect:init:*: { if ($protection(op) == on) { did -c protect 2 } if ($protection(kick) == on) { did -c protect 3 } if ($protection(ban) == on) { did -c protect 4 } if ($protection(massjoin) == on) { did -c protect 5 } if ($protection(flood) == on) { did -c protect 6 } if ($protection(iflood) == on) { did -c protect 7 } did -a protect 9 $protection(num) did -a protect 12 $protection(timer) if ($exempt(chan)) { %Z31.4 = 1 while (%Z31.4 <= $numtok($exempt(chan),44)) { did -a protect 18 $gettok($exempt(chan),%Z31.4,44) inc %Z31.4 } } if ($exempt(user)) { %Z31.5 = 1 while (%Z31.5 <= $numtok($exempt(user),44)) { did -a protect 21 $gettok($exempt(user),%Z31.5,44) inc %Z31.5 } } if ($exempt(host)) { %Z31.6 = 1 while (%Z31.6 <= $numtok($exempt(host),44)) { did -a protect 24 $gettok($exempt(host),%Z31.6,44) inc %Z31.6 } } if ($protection(pmflood) == on) { did -c protect 28 } unset %Z31.* } on *:DIALOG:protect:sclick:*: { if ($did == 2) { if ($did(2).state == 1) { protection op on } else { protection op off } } if ($did == 3) { if ($did(3).state == 1) { protection kick on } else { protection kick off } } if ($did == 4) { if ($did(4).state == 1) { protection ban on } else { protection ban off } } if ($did == 5) { if ($did(5).state == 1) { protection massjoin on } else { protection massjoin off } } if ($did == 6) { if ($did(6).state == 1) { protection flood on } else { protection flood off } } if ($did == 7) { if ($did(7).state == 1) { protection iflood on } else { protection iflood off } } if ($did == 19) { %z31.7 = $input(Please enter the channel you wish to add to the exception list.,oe,Protection) if ($chr(35) !isin %z31.7) { %z31.dump = $input(You must enter the # symbol before the channel name.,oh,Protection) } elseif ($chr(35) isin %z31.7) { exempt chan add %z31.7 did -a protect 18 %z31.7 } } if ($did == 20) { if (!$did(18).sel) { %z31.dump = $input(Please select the channel you wish to remove from the exception list first.,oh,Protection) } elseif ($did(18).sel) { %z31.dump = $input(Are you sure you want to remove $did(18).seltext from the exception list?,yw,Protection) if (%z31.dump == $true) { exempt chan del $did(18).seltext did -r protect 18 if ($exempt(chan)) { %Z31.4 = 1 while (%Z31.4 <= $numtok($exempt(chan),44)) { did -a protect 18 $gettok($exempt(chan),%Z31.4,44) inc %Z31.4 } } } } } if ($did == 22) { %z31.8 = $input(Please enter the user name you wish to add to the exception list.,oe,Protection) if (%z31.8 != $false) && (%z31.8 != $null) { exempt user add %z31.8 did -a protect 21 %z31.8 } } if ($did == 23) { if (!$did(21).sel) { %z31.dump = $input(Please select the user name you wish to remove from the exception list first.,oh,Protection) } elseif ($did(21).sel) { %z31.dump = $input(Are you sure you want to remove $did(21).seltext from the exception list?,yw,Protection) if (%z31.dump == $true) { exempt user del $did(21).seltext did -r protect 21 if ($exempt(user)) { %Z31.5 = 1 while (%Z31.5 <= $numtok($exempt(user),44)) { did -a protect 21 $gettok($exempt(user),%Z31.5,44) inc %Z31.5 } } } } } if ($did == 25) { %z31.9 = $input(Please enter the hostmask you wish to add to the exception list. NOTE: It must be a valid hostmask!,oe,Protection) if ($chr(46) !isin %z31.9) || ($chr(64) !isin %z31.9) || ($chr(33) !isin %z31.9) { %z31.dump = $input(%z31.9 is not a valid host mask.,oh,Protection) } elseif ($chr(46) isin %z31.9) && ($chr(64) isin %z31.9) && ($chr(33) isin %z31.9) { exempt host add %z31.9 did -a protect 24 %z31.9 } } if ($did == 26) { if (!$did(24).sel) { %z31.dump = $input(Please select the hostmask you wish to remove from the exception list first.,oh,Protection) } elseif ($did(24).sel) { %z31.dump = $input(Are you sure you want to remove $did(24).seltext from the exception list?,yw,Protection) if (%z31.dump == $true) { exempt host del $did(24).seltext did -r protect 24 if ($exempt(host)) { %Z31.6 = 1 while (%Z31.6 <= $numtok($exempt(host),44)) { did -a protect 24 $gettok($exempt(user),%Z31.6,44) inc %Z31.6 } } } } } if ($did == 28) { if ($did(28).state == 1) { protection pmflood on } else { protection pmflood off } } :end unset %z31.* } on *:DIALOG:protect:edit:9: { if ($did(9).text) { protection num $did(9).text } } on *:DIALOG:protect:edit:12: { if ($did(12).text) { protection timer $did(12).text } } alias IsExempt { if ($1) { if ($exempt(chan,$1) == $true) { return $true } if ($exempt(user,$1) == $true) { return $true } if ($exempt(host,$address($1,0)) == $true) { return $true } if ($exempt(host,$address($1,1)) == $true) { return $true } if ($exempt(host,$address($1,2)) == $true) { return $true } if ($exempt(host,$address($1,3)) == $true) { return $true } if ($exempt(host,$address($1,4)) == $true) { return $true } if ($exempt(host,$address($1,5)) == $true) { return $true } if ($exempt(host,$address($1,6)) == $true) { return $true } if ($exempt(host,$address($1,7)) == $true) { return $true } if ($exempt(host,$address($1,8)) == $true) { return $true } if ($exempt(host,$address($1,9)) == $true) { return $true } else { return $false } } } on *:DEOP:#: { if ($protection(op) == on) { if ($nick == $me) || ($nick == ChanServ) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } if ($opnick == $me) { %z31-op = $true %z31-chan = $chan %z31-nick = $nick .timerZ31.1 1 1 chanserv op $chan $me } } :end } on *:OP:%z31-chan: { if (%z31-op == $true) || (%z31-kick == $true) || (%z31-ban == $true) { if (%z31-nick ison $chan) { mode $chan -ob %z31-nick %z31-banmask .timerZ31.3 -m 1 1500 kick $chan %z31-nick Kicked by $me 4(OP Abuse) } } unset %z31-* } on @*:KICK:#: { if ($protection(kick) == on) { if ($nick == $me) || ($nick == ChanServ) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } if ($knick == $me) { %z31-kick = $true %z31-chan = $chan %z31-nick = $nick .timerZ31.4 1 1 join %z31-chan } } :end } alias IsBanned { if ($me isin $1) { return $true } if ($address($me,0) == $1) { return $true } if ($address($me,1) == $1) { return $true } if ($address($me,2) == $1) { return $true } if ($address($me,3) == $1) { return $true } if ($address($me,4) == $1) { return $true } if ($address($me,5) == $1) { return $true } if ($address($me,6) == $1) { return $true } if ($address($me,7) == $1) { return $true } if ($address($me,8) == $1) { return $true } if ($address($me,9) == $1) { return $true } if ($gettok($host,4,46) isin $1) { return $true } else { return $false } } on @*:BAN:#: { if ($protection(ban) == on) { if ($nick == $me) || ($nick == ChanServ) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } if ($IsBanned($banmask) == $true) { set -u8 %z31-ban $true set -u8 %z31-banmask $banmask set -u8 %z31-chan $chan set -u8 %z31-nick $nick .timerZ31.6 1 1 mode $chan -bo $banmask $nick .timerZ31.7 1 2 kick $chan $nick Kicked by $me 4(OP Abuse) } } :end } raw *:*: { if (%z31-kick == $true) { if ($numeric == 471) || ($numeric == 473) || ($numeric == 474) || ($numeric == 475) { .timerZ31.5 1 1 chanserv invite %z31-chan halt } } } on ^*:NOTICE:*:*: { if (%z31-op == $true) || (%z31-kick == $true) || (%z31-ban == $true) && ($nick == ChanServ) { %chanserv = $strip($1-) if (access denied isin %chanserv) || (permission denied isin %chanserv) || (You do not have access isin %chanserv) { echo -a $+ $color(info) $+ * ChanServ could not complete the operation on %z31-chan $+ . (Access Denied) unset %z31-* } if (not registered isin %chanserv) { echo -a $+ $color(info) $+ * ChanServ could not complete the operation on %z31-chan $+ . (Channel not registered) unset %z31-* } unset %chanserv halt } } on @*:JOIN:#: { if ($protection(massjoin) == on) { if ($IsExempt($chan) == $true) || ($nick isreg $chan) { goto end } inc % [ $+ [ $chan ] ] %clones. [ $+ [ $chan ] ] = $addtok(%clones. [ $+ [ $chan ] ],$nick,44) .timerJOINS1 1 $protection(timer) unset % [ $+ [ $chan ] ] .timerJOINS2 1 $protection(timer) unset %clones. [ $+ [ $chan ] ] if (% [ $+ [ $chan ] ] >= $protection(num)) { mode $chan +dim .timerJOINS* off .timerMODE 1 300 mode $chan -dim clonek $chan } } :end } alias clonek { %kick = 1 while (%kick <= $numtok(%clones. [ $+ [ $1 ] ],44)) { if ($gettok(%clones. [ $+ [ $1 ] ],%kick,44) ison $1) { .timerCK $+ %kick -m 1 $calc(1300 * %kick + 660) kick $chan $gettok(%clones. [ $+ [ $1 ] ],%kick,44) Mass Join 4(Clone) } inc %kick } if (!$timerKICK*) { .timerKICK $+ $rand(1,999) 1 $calc($numtok(%clones. [ $+ [ $1 ] ],44) + 2) ck.us $1 } } alias ck.us { unset % [ $+ [ $1 ] ] unset %clones. [ $+ [ $1 ] ] unset %kick } on *:TEXT:*:#: { if ($protection(flood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { if ($me isop $chan) { .timer $+ $nick $+ 1 1 1 kick $chan $nick Slow down! 4(Flooding) } elseif ($me !isop $chan) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) $chan by $nick - Ignored for 3 minutes. } unset % [ $+ [ $nick ] ] } } :end } on *:NOTICE:*:#: { if ($protection(flood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { if ($me isop $chan) { .timer $+ $nick $+ 1 1 1 kick $chan $nick Slow down! 4(Flooding) } elseif ($me !isop $chan) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) $chan by $nick - Ignored for 3 minutes. } unset % [ $+ [ $nick ] ] } } :end } on *:ACTION:*:#: { if ($protection(flood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { if ($me isop $chan) { .timer $+ $nick $+ 1 1 1 kick $chan $nick Slow down! 4(Flooding) } elseif ($me !isop $chan) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) $chan by $nick - Ignored for 3 minutes. } unset % [ $+ [ $nick ] ] } } :end } on *:TEXT:*:?: { if ($protection(pmflood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) Private Message by $nick - Ignored for 3 minutes. close -m $nick unset % [ $+ [ $nick ] ] } } :end } on *:ACTION:*:?: { if ($protection(pmflood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) Private Message by $nick - Ignored for 3 minutes. close -m $nick unset % [ $+ [ $nick ] ] } } :end } on *:NOTICE:*:?: { if ($protection(flood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc % [ $+ [ $nick ] ] if (!$timer($nick)) { .timer $+ $nick 1 $protection(timer) unset % $+ $nick } if (% [ $+ [ $nick ] ] >= $protection(num)) { .ignore -u180 $nick $+ !*@* .echo -a $+ $color(info) $+ * 4Flooding Detected: $+ $color(info) Notice by $nick - Ignored for 3 minutes. close -m $nick unset % [ $+ [ $nick ] ] } } :end } on *:INVITE:#: { if ($protection(iflood) == on) { if (Serv isin $nick) || ($IsExempt($chan) == $true) || ($IsExempt($nick) == $true) { goto end } inc %invites if (!$timer(invite)) { .timerinvite 1 $protection(timer) unset %invites } if (%invites >= $calc($protection(num) - 1)) { ignore -iu240 *!*@* echo -a $+ $color(info) $+ * - 4Flooding Detected: $+ $color(info) Invite Flood - All invites ignored for 4 minutes. } } :end }
  23. V5 - Better, faster, stronger. About IRC Guard 5000: http://CodersElite.site90.net/PG5KHelp.htm First: Just copy snippet below. Open notepad and paste code into notepad, the SAVE FILE AS criptnamehere.mrc into your mIRC directory. Then: In mIRC press ALT+R when the script editor pops up go to FILE select LOAD and select scriptnamehere.mrc and click okay, allow initialization commands to run. Or: Once the file is saved into the mIRC directory use: /load -rs scriptnamehere.mrc and allow the initialization commands to run. IRC Guard 5000 (V5) is a blacklist made to repel pedophiles, creeps, trolls and other undesirable users on IRC. you must have channel operator (+o) status on a channel to use this script! Please report all bugs here! Looking for V4? Get the source code here: http://CodersElite.site90.net/PG5K.htm ;IRC Guard 5000 (V5) ;Better, Faster, Stronger. ;By Neo Nemesis ;Basically a black list designed to ;repel IRC stalkers, creepers, pedos ;and other undesirables ;Special thanks to Jethro_, Bofh, Gemstone, Manit and gasak :D ;And thanks to the memebers of Hawkee forums! ;List Update check on start on *:LOAD: { echo -a * IRC Guard 5000 (V5) is loading... ;set -u0 %crl.01 on,on,on,on,on,ban,2,You are not welcome here! ;checking for older versions if ($isfile(PG5K.ini) == $true) { if ($creep.file(01)) { set -u0 %CRP_DUMP $input(Do you wish to save old entries from V4?,yi,IRC Guard 5000 $chr(40) $+ V5 $+ $chr(41)) if (%CRP_DUMP == $true) { echo -a * Saving old entries and options... ;saving old entries. Most of them save ;right over except for user white list. ;$creep.file(05) is parsed. if ($creep.file(02)) { set -u0 %crl.ubl $creep.file(02) } if ($creep.file(03)) { set -u0 %crl.ibl $creep.file(03) } if ($creep.file(04)) { set -u0 %crl.cwl $creep.file(04) } if ($creep.file(05)) { set -u0 %num 1 while (%num <= $numtok($creep.file(05),44)) { if ($chr(33) isin $gettok($creep.file(05),%num,44)) && ($chr(64) isin $gettok($creep.file(05),%num,44)) { set -u0 %crl.hwl $addtok(%crl.hwl,$gettok($creep.file(05),$num,44),44) } else { set -u0 %crl.uwl $addtok(%crl.uwl,$gettok($creep.file(05),$num,44),44) } inc %num } if ($creep.file(06)) { set -u0 %crl.nwl $creep.file(06) } ;if ($creep.file(kickmsg) != You are not welcome here!) { set -u0 %crl.opt on,on,on,on,on,ban,2, $+ $remove($creep.file(kickmsg),$chr(44)) } set -u0 %crl.opt on,on,on,on,on,ban,2,You are not welcome here! remini PG5K.ini PG5K } } } } if (%crl.opt) { writeini PG5K.ini PG5K 01 %crl.opt } elseif (!%crl.opt) { writeini PG5K.ini PG5K 01 on,on,on,on,on,ban,2,You are not welcome here! } if (%crl.ubl) { writeini PG5K.ini PG5K 02 %crl.ubl } if (%crl.ibl) { writeini PG5K.ini PG5K 03 %crl.ibl } if (%crl.cwl) { writeini PG5K.ini PG5K 06 %crl.cwl } if (%crl.uwl) { writeini PG5K.ini PG5K 07 %crl.uwl } if (%crl.hwl) { writeini PG5K.ini PG5K 08 %crl.hwl } echo -a * IRC Guard 5000 V5 has finished loading. Use /creep to access the main menu, you can also use /creep help for help, or you can select it from the popup menus throughout mIRC. } on *:START: { if ($creep(enable) == on) { PG5K_Update GET } } alias creep { if (!$1) && (!$dialog(creep)) { dialog -m creep creep } if ($1 == enable) { if ($isid == $true) { return $gettok($creep.file(01),1,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,1,44) } } if ($1 == update) { if ($isid == $true) { return $gettok($creep.file(01),2,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,2,44) } } if ($1 == scan1) { if ($isid == $true) { return $gettok($creep.file(01),3,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,3,44) } } if ($1 == scan2) { if ($isid == $true) { return $gettok($creep.file(01),4,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,4,44) } } if ($1 == scan3) { if ($isid == $true) { return $gettok($creep.file(01),5,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,5,44) } } if ($1 == action) { if ($isid == $true) { return $gettok($creep.file(01),6,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,6,44) } } if ($1 == bantype) { if ($isid == $true) { return $gettok($creep.file(01),7,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2,7,44) } } if ($1 == kickmsg) { if ($isid == $true) { return $gettok($creep.file(01),8,44) } else { writeini PG5K.ini PG5K 01 $puttok($creep.file(01),$2-,8,44) } } if ($1 == add) { writeini PG5K.ini PG5K $2 $addtok($creep.file($2),$3-,44) } if ($1 == del) { if ($creep.file($2) == $3-) { remini PG5K.ini PG5K $2 } else { writeini PG5K.ini PG5K $2 $remtok($creep.file($2),$3-,1,44) } } if ($1 == help) { run http://CodersElite.site90.net/PG5KHelp.htm } if ($1 == cmsg1) { return 4/!\ CREEP ALERT /!\ $gettok($creep.file(01),8,44) } if ($1 == cmsg2) { return 4/!\ CREEP ALERT /!\ You have been added to my black list creep! } } alias creep.file { return $readini(PG5K.ini,PG5K,$1) } alias IsListed { return $istok($creep.file($1),$2,44) } alias IsListed_WC { set -u0 %CRP_WC 1 while (%CRP_WC <= $numtok($creep.file(05),44)) { if ($remove($gettok($creep.file(05),%CRP_WC,44),$chr(42)) isin $1) { return $true } inc %CRP_WC } return $false } alias C_LMngr { if ($1 == gui_bl) && (!$dialog(C_LMngr)) { dialog -mo C_LMngr C_LMngr } if ($1 == gui_wl) && (!$dialog(C_LMngr_)) { dialog -mo C_LMngr_ C_LMngr_ } ;/C_LMngr add -iuihwcUHnd <info> if ($1 == add) { if ($2 === -u) { %CLM_ = user name,02,07,0 | goto parse } if ($2 === -i) { %CLM_ = ident,03,00,0 | goto parse } if ($2 === -h) { %CLM_ = host mask,04,08,0 | goto parse } if ($2 === -w) { %CLM_ = wildcard,05,00,0 | goto parse } if ($2 === -c) { %CLM_ = channel,06,00,1 | goto parse } if ($2 === -U) { %CLM_ = user name,07,02,1 | goto parse } if ($2 === -H) { %CLM_ = host mask,08,04,1 | goto parse } if ($2 === -n) { %CLM_ = network,09,00,1 | goto parse } if ($2 === -d) { ;add to update list } else { goto end } :parse %CLM_p = $gettok(%CLM_,1,44) %CLM_al = $gettok(%CLM_,2,44) %CLM_ol = $gettok(%CLM_,3,44) %CLM_c = $gettok(%CLM_,4,44) if ($IsListed(%CLM_al,$3-) == $true) { if (%CLM_c == 0) { set -u0 %CRP_DUMP $input(The %CLM_p ' $+ $3- $+ ' is already listed in the black list.,oh,IRC Guard 5000) | goto end } elseif (%CLM_c == 1) { set -u0 %CRP_DUMP $input(The %CLM_p ' $+ $3- $+ ' is already listed in the white list.,oh IRC Guard 5000) | goto end } } if (%CLM_ol != 00) && ($IsListed(%CLM_ol,$3-) == $true) { if (%CLM_c == 0) { set -u0 %CRP_DUMP $input(The %CLM_p ' $+ $3- $+ ' is white listed and cannot be added to the black list.,oh,IRC Guard 5000) | goto end } elseif (%CLM_c == 1) { set -u0 %CRP_DUMP $input(The %CLM_p ' $+ $3- $+ ' is black listed and caoont be added to the white list.,oh,IRC Guard 5000) | goto end } } else { creep add %CLM_al $3- if ($dialog(creep)) { did -a creep $iif(%CLM_c = 0,2,30) $3- } else { if (%CLM_c == 0) { echo -a $+ $color(info) $+ * $3- added to the black list. } elseif (%CLM_c == 1) { echo -a $+ $color(info) $+ * $3- added to the white list. } } if (%CLM_p == user name) { set -u0 %CRP_Sca 1 while (%CRP_Sca <= $chan(0)) { if ($3 ison $chan(%CRP_Sca)) && ($me isop $chan(%CRP_Sca)) { CR_J $3 $chan(%CRP_Sca) } inc %CRP_Sca } } goto end } } if ($1 == del) { %CLM_r = 2 while (%CLM_r <= 9) { if ($IsListed(0 $+ %CLM_r,$2-) == $true) { creep del 0 $+ %CLM_r $2- } else { inc %CLM_r } } } if ($1 == clear) { if ($2 == bl) { did -r creep 2 set -u0 %CRP_bln 2 while (%CRP_bln <= 5) { remini PG5K.ini PG5K 0 $+ %CRP_bln inc %CRP_bln } } elseif ($2 == wl) { did -r creep 30 set -u0 %CRP_wln 6 while (%CRP_wln <= 9) { remini PG5K.ini PG5K 0 $+ %CRP_wln inc %CRP_wln } } } if ($1 == load) { set -u0 %CLM_l 2 while (%CLM_l <= 9) { if (%CLM_l <= 5) { %CLM_id = 2 } elseif (%CLM_l > 5) { %CLM_id = 30 } if ($creep.file(0 $+ %CLM_l)) { didtok creep %CLM_id 44 $creep.file(0 $+ %CLM_l) } inc %CLM_l } goto end } :end unset %CLM_* } alias CR_J { if ($IsListed(06,$2) == $true) || ($IsListed(07,$1) == $true) || ($IsListed(09,$network) == $true) { goto end } set -u0 %CR_Jwl 0 while (%CR_Jwl <= 9) { if ($IsListed(08,$address($1,%CR_Jwl)) == $true) { goto end } inc %CR_Jwl } if ($creep(scan1) == on) { if ($IsListed(03,$gettok($gettok($address($1,5),2,33),1,64)) == $true) { if ($IsListed(02,$1) == $false) { creep add 02 $1 } goto User_Check } elseif ($IsListed(03,$gettok($gettok($address($1,5),2,33),1,64)) == $false) { if ($IsListed(02,$1) == $true) { creep add 03 $gettok($gettok($address($1,5),2,33),1,64) } goto User_Check } } :User_Check if ($IsListed(02,$1) == $true) { goto User_Run } if ($IsListed_WC($address($1,5)) == $true) { goto User_Run } set -u0 %CR_N 0 while (%CR_N <= 9) { if ($IsListed(04,$address($1,%CR_N)) == $true) { goto User_Run } inc %CR_N } goto end :User_Run if ($creep(action) == ban) { CR_K $creep(bantype) $2 $1 } else { CR_K 11 $2 $1 } :end } alias CR_K { if ($1 <= 9) { mode $2 +b $address($3,$1) goto kick } if ($1 == 10) { mode $2 +b $3 $+ !*@* goto kick } if ($1 == 11) { goto kick } :kick .timerCRP $+ $rand(1,99999) -m 1 $rand(800,1600) kick $2 $3 $creep(cmsg1) } ;Auto Update alias PG5K_Update { if ($1 == GET) { sockclose PG5K sockopen PG5K coderselite.site90.net 80 } if ($1 == Run) { if ($IsListed(10,$2) == $true) { set -u0 %CRP_DUMP $input(You already have this list update.,oh,IRC Guard 5000) } else { set -u0 %CRP_DUMP $input(Are you sure you want to acquire the ' $+ $2 $+ ' list update?,yw,IRC Guard 5000) } if (%CRP_DUMP == $true) { did -r PG5K_U 5 did -a PG5K_U 5 UPDATING PLEASE WAIT ;UGH >.< Below Necessary for faster processing through large lists. if ($gettok($gettok(% [ $+ [ $2 ] ],3,164),2,61) != none) { AL_U 02 $gettok($gettok(% [ $+ [ $2 ] ],3,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],4,164),2,61) != none) { AL_U 03 $gettok($gettok(% [ $+ [ $2 ] ],4,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],5,164),2,61) != none) { AL_U 04 $gettok($gettok(% [ $+ [ $2 ] ],5,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],6,164),2,61) != none) { AL_U 05 $gettok($gettok(% [ $+ [ $2 ] ],6,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],7,164),2,61) != none) { AL_U 06 $gettok($gettok(% [ $+ [ $2 ] ],7,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],8,164),2,61) != none) { AL_U 07 $gettok($gettok(% [ $+ [ $2 ] ],8,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],9,164),2,61) != none) { AL_U 08 $gettok($gettok(% [ $+ [ $2 ] ],9,164),2,61) } if ($gettok($gettok(% [ $+ [ $2 ] ],10,164),2,61) != none) { AL_U 09 $gettok($gettok(% [ $+ [ $2 ] ],10,164),2,61) } creep add 10 $remove($gettok(% [ $+ [ $2 ] ],1,164) - $gettok(% [ $+ [ $2 ] ],2,164),$chr(44)) did -r PG5K_U 5 did -a PG5K_U 5 Update complete :) set -u0 %CRP_DUMP $input(List update ' $+ $2 $+ ' complete.,o,IRC Guard 5000) did -r PG5K_U 6 didtok PG5K_U 6 44 $creep.file(10) did -r PG5K_U 5 did -a PG5K_U 5 My updates } } } alias AL_U { set -u0 %AL_U 1 while (%AL_U <= $numtok($2-,44)) { if ($IsListed($1,$gettok($2-,%AL_U,44)) == $true) { goto inc } else { creep add $1 $gettok($2-,%AL_U,44) if ($dialog(creep)) { if ($remove($1,0) <= 5) { did -a creep 2 $gettok($2-,%AL_U,44) } elseif ($remove($1,0) >= 6) { did -a creep 30 $gettok($2-,%AL_U,44) } } } :inc inc %AL_U } } on *:SOCKOPEN:PG5K: { sockwrite -n $sockname GET /PG5KProtocol_II.htm HTTP/1.1 sockwrite -n $sockname Host: coderselite.site90.net sockwrite -n $sockname Connection: Close sockwrite -n $sockname Content-Type: text/html sockwrite -n $sockname $crlf } on *:SOCKREAD:PG5K: { sockread %PG5K_Ur if (%PG5K_Ur == <br>) { noop } if ($gettok(%PG5K_Ur,1,62) == PACKAGES) { %PG5K_UP = $gettok(%PG5K_Ur,2,62) } if (%PG5K_UP) && ($chr(164) isin %PG5K_Ur) { %PG5K_UT = $gettok(%PG5K_Ur,1,62) % [ $+ [ %PG5K_UT ] ] = $gettok(%PG5K_Ur,2,62) } if (%PG5K_Ur == CONTENT>END) { sockclose PG5K if (!$dialog(PG5K_U)) { dialog -m PG5K_U PG5K_U } else { did -r PG5K_U 1,2,6 did -a PG5K_U 1 There are $numtok(%PG5K_UP,44) updates didtok PG5K_U 2 44 %PG5K_UP if ($creep.file(10)) { didtok PG5K_U 6 44 $creep.file(10) } did -z PG5K_U 6 } } } ;placement alias PG5K_U { if ($1 == x) { if ($dialog(creep)) { return $calc($dialog(creep).x - 306) } else { return -1 } } if ($1 == y) { if ($dialog(creep)) { return $dialog(creep).y } else { return -1 } } } dialog PG5K_U { size $PG5K_U(x) $PG5K_U(y) 300 300 title IRC Guard 5000 - List Updates box ""1, 5 5 290 130 list 2, 10 20 280 100 button "Get Update"3, 10 107 80 23 button "Get Info"4, 95 107 80 23 box "My Updates"5, 5 140 290 130 list 6, 10 155 280 100,sort,hsbar button "Remove"7, 10 242 80 23 button "Help"8, 95 242 80 23 button "Close"9, 110 274 80 23,ok } on *:DIALOG:PG5K_U:init:*: { did -a PG5K_U 1 There are $numtok(%PG5K_UP,44) updates didtok PG5K_U 2 44 %PG5K_UP if ($creep.file(10)) { didtok PG5K_U 6 44 $creep.file(10) } did -z PG5K_U 6 } on *:DIALOG:PG5K_U:sclick:*: { if ($did == 3) { if (!$did(2).sel) { set -u0 %CRP_DUMP $input(Please select the list update package you would like to acquire.,oh,IRC Guard 5000) } else { PG5K_Update Run $did(2).seltext } } if ($did == 4) { if (!$did(2).sel) { set -u0 %CRP_DUMP $input(Please select the list update package you would like information about.,oh,IRC Guard 5000) } else { set -u0 %CRP_DUMP $input($gettok(% [ $+ [ $did(2).seltext ] ],2,164),oi,IRC Guard 5000 - $gettok(% [ $+ [ $did(2).seltext ] ],1,164)) } } if ($did == 7) { if (!$did(6).sel) { set -u0 %CRP_DUMP = $input(Please select the list update you would like to remove.,oh,IRC Guard 5000) } else { set -u0 %CRP_DUMP $input(Are you sure you want to remove ' $+ $did(6).seltext $+ ' ?,yw,IRC Guard 5000) if (%CRP_DUMP == $true) { creep del 10 $did(6).seltext did -r PG5K_U 6 if ($creep.file(10)) { didtok PG5K_U 6 44 $creep.file(10) } } } } if ($did == 8) { creep help } } dialog C_LMngr { size -1 -1 300 100 title IRC Guard 5000 - Add to Black List box "Entry to add"1, 5 5 290 45 edit ""2, 10 20 280 23 radio "User name"3, 24 55 70 15 radio "Host mask"4, 95 55 70 15 radio "Ident"5, 165 55 45 15 radio "Wildcard"6, 212 55 60 15 button "Add"7, 25 75 80 23 button "Close"8, 110 75 80 23,cancel button "Help"9, 195 75 80 23 } on *:DIALOG:C_LMngr:init:*: { %C_LM = -u did -c C_LMngr 3 } on *:DIALOG:C_LMngr:sclick:*: { if ($did == 3) { %C_LM = -u } if ($did == 4) { %C_LM = -h } if ($did == 5) { %C_LM = -i } if ($did == 6) { %C_LM = -w } if ($did == 7) { if (!$did(2).text) { set -u0 %CRP_DUMP $input(Please enter what you would like to enter into the black list and select the appropriate category.,oh,IRC Guard 5000) goto end } else { if (%C_LM == -u) { if ($chr(42) isin $did(2).text) || ($chr(33) isin $did(2).text) || ($chr(64) isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid user name.,oh,IRC Guard 5000) goto end } else { goto add } } elseif (%C_LM == -h) { if ($chr(33) !isin $did(2).text) || ($chr(64) !isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid host mask.,oh,IRC Guard 5000) goto end } else { goto add } } elseif (%C_LM == -i) { if ($chr(42) isin $did(2).text) || ($chr(33) isin $did(2).text) || ($chr(64) isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid ident.,oh,IRC Guard 5000) goto end } else { goto add } } elseif (%C_LM == -w) { if ($chr(42) !isin $did(2).text) || ($chr(33) isin $did(2).text) || ($chr(64) isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid wildcard.,oh,IRC Guard 5000) goto end } else { goto add } } :add C_LMngr add %C_LM $did(C_LMngr,2).text dialog -x C_LMngr unset %C_LM } } :end } on *:DIALOG:C_LMngr:close:*: { unset %C_LM } dialog C_LMngr_ { size -1 -1 300 100 title IRC Guard 5000 - Add to White List box "Entry to add"1, 5 5 290 45 edit ""2, 10 20 280 23 radio "Channel"3, 17 55 58 15 radio "User name"4, 78 55 68 15 radio "Host mask"5, 148 55 71 15 radio "Network"6, 218 55 60 15 button "Add"7, 25 75 80 23 button "Close"8, 110 75 80 23,cancel button "Help"9, 195 75 80 23 } on *:DIALOG:C_LMngr_:init:*: { %CLM = -c did -c C_LMngr_ 3 } on *:DIALOG:C_LMngr_:sclick:*: { if ($did == 3) { %CLM = -c } if ($did == 4) { %CLM = -U } if ($did == 5) { %CLM = -H } if ($did == 6) { %CLM = -n } if ($did == 7) { if (!$did(2).text) { set -u0 %CRP_DUMP $input(Please enter what you would like to enter into the white list and select the appropriate category.,oh,IRC Guard 5000) goto end } else { if (%CLM == -c) { if ($chr(35) !isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid channel.,oh,IRC Guard 5000) goto end } else { goto add } } if (%CLM == -U) { if ($chr(42) isin $did(2).text) || ($chr(33) isin $did(2).text) || ($chr(64) isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid user name.,oh,IRC Guard 5000) goto end } else { goto add } } if (%CLM == -H) { if ($chr(33) !isin $did(2).text) || ($chr(64) !isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid host mask.,oh,IRC Guard 5000) goto end } else { goto add } } if (%CLM == -n) { if ($chr(32) isin $did(2).text) { set -u0 %CRP_DUMP $input(' $+ $did(2).text $+ ' is not a valid network.,oh,IRC Guard 5000) goto end } else { goto add } } :add C_LMngr add %CLM $did(2).text dialog -x C_LMngr_ unset %CLM } } :end } on *:DIALOG:C_LMngr_:close:*: { unset %CLM } dialog creep { size -1 -1 300 311 title IRC Guard 5000 [/creep] box "Black List"1, 5 5 290 275 list 2, 10 20 280 240,sort button "Add"3, 25 251 80 23 button "Remove"4, 110 251 80 23 button "Clear"5, 195 251 80 23 button "Help"6, 70 284 80 23 button "Close"7, 155 284 80 23,ok check ":D"8, 270 289 25 18,push ;tabs tab "Options"9, 5 284 290 200 tab "White List"10 tab "About"11 button "Help"12, 70 485 80 23 button "Close"13, 155 485 80 23,cancel check ":D"14, 270 490 25 18,push ;tab 9 "Options" check "Enable black list"15, 10 310 93 15,tab9 box "List Update"16, 10 325 145 45,tab9 check "Enable"17, 15 343 50 15,tab9 button "Check updates"18, 70 341 80 20,tab9 box "User Scan5K"19, 10 370 145 65,tab9 check "Scan user ident"20, 15 385 91 15,tab9 check "Scan nick changes"21, 15 400 105 15,tab9 check "Scan channel on join"22, 15 415 115 15,tab9 box "Action"23, 160 310 130 50,tab9 radio "Kick user"24, 165 325 60 15,tab9 radio "Kick/ban user"25, 165 340 83 15,tab9 box "Ban Type"26, 160 360 130 45,tab9 combo 27, 165 375 120 150,drop,tab9 box "Kick Message"28, 10 435 280 42,tab9 edit ""29, 15 449 270 23,tab9 ;tab 10 "white list" list 30, 10 315 280 145,sort,tab10 button "Add"31, 25 445 80 23,tab10 button "Remove"32, 110 445 80 23,tab10 button "Clear"33, 195 445 80 23,tab10 ;tab 11 "about" text "IRC Guard 5000"34, 98 345 80 15,tab11 text "Version: 5.0.0 V5"35, 96 385 100 15,tab11 text "By: Neo Nemesis"36, 98 400 80 15,tab11 link "http://CodersElite.site90.net"37, 75 420 150 15,tab11 } on *:DIALOG:creep:init:*: { did -h creep 9 C_LMngr load did -a creep 27 0: *!user@host did -a creep 27 1: *!*user@host did -a creep 27 2: *!*@host did -a creep 27 3: *!*user@*.host did -a creep 27 4: *!*@*.host did -a creep 27 5: nick!user@host did -a creep 27 6: nick!*user@host did -a creep 27 7: nick!*@host did -a creep 27 8: nick!*user@*.host did -a creep 27 9: nick!*@*.host did -a creep 27 10: nick!*@* if ($creep(enable) == on) { did -c creep 15 } if ($creep(update) == on) { did -c creep 17 PG5K_Update GET } if ($creep(scan1) == on) { did -c creep 20 } if ($creep(scan2) == on) { did -c creep 21 } if ($creep(scan3) == on) { did -c creep 22 } if ($creep(action) == kick) { did -c creep 24 } elseif ($creep(action) == ban) { did -c creep 25 } did -c creep 27 $calc($creep(bantype) + 1) did -a creep 29 $creep(kickmsg) } on *:DIALOG:creep:sclick:*: { if ($did == 3) { C_LMngr gui_bl } if ($did == 4) { if (!$did(2).sel) { set -u0 %CRP_DUMP $input(Please select a entry from the black list you would like to remove.,oh,IRC Guard 5000) } else { set -u0 %CRP_DUMP $input(Are you sure you want to remove ' $+ $did(2).seltext $+ ' from the black list?,yw,IRC Guard 5000) } if (%CRP_DUMP == $true) { C_LMngr del $did(2).seltext did -r creep 2,30 C_LMngr load } } if ($did == 5) { set -u0 %CRP_DUMP $input(Are you sure you want to clear all entries from the black list?,yw,IRC Guard 5000) if (%CRP_DUMP == $true) { C_LMngr clear bl } } if ($did == 6) { creep help } if ($did == 8) { dialog -s creep $dialog(creep).x $dialog(creep).y 300 510 did -h creep 6,7,8 did -v creep 9,12,13,14 did -c creep 14 } if ($did == 12) { creep help } if ($did == 14) { dialog -s creep $dialog(creep).x $dialog(creep).y 300 311 did -h creep 9,12,13,14 did -v creep 6,7,8 did -u creep 8 } if ($did == 15) { if ($did(15).state == 1) { creep enable on } else { creep enable off } } if ($did == 17) { if ($did(17).state == 1) { creep update on } else { creep update off } } if ($did == 18) { PG5K_Update GET } if ($did == 20) { if ($did(20).state == 1) { creep scan1 on } else { creep scan1 off } } if ($did == 21) { if ($did(21).state == 1) { creep scan2 on } else { creep scan2 off } } if ($did == 22) { if ($did(22).state == 1) { creep scan3 on } else { creep scan3 off } } if ($did == 24) { creep action kick } if ($did == 25) { creep action ban } if ($did == 27) { creep bantype $calc($did(27).sel - 1) } if ($did == 31) { C_LMngr gui_wl } if ($did == 32) { if (!$did(30).sel) { set -u0 %CRP_DUMP $input(Please select the entry from the white list you wish to remove.,oh,IRC Guard 5000) } else { set -u0 %CRP_DUMP $input(Are you sure you want to remove ' $+ $did(30).seltext $+ ' from the white list?,yw,IRC Guard 5000) if (%CRP_DUMP == $true) { C_LMngr del $did(30).seltext did -r creep 2,30 C_LMngr load } } } if ($did == 33) { set -u0 %CRP_DUMP $input(Are you sure you want to clear all entries from the white list?,yw,IRC Guard 5000) if (%CRP_DUMP == $true) { C_LMngr clear wl } } if ($did == 37) { run http://CodersElite.site90.net } } on *:DIALOG:creep:edit:29: { if ($did(29).text) { creep kickmsg $did(29).text } else { creep kickmsg You are not welcome here! } } on *:DIALOG:creep:close:*: { if ($dialog(C_LMngr)) { dialog -x C_LMngr } if ($dialog(C_LMngr_)) { dialog -x C_LMngr } if ($dialog(PG5K_U)) { dialog -x PG5K_U } } ;checking system ;check for black listed users when they join on @*:JOIN:#: { if ($nick == $me) { goto end } if ($creep(enable)) { CR_J $nick $chan } :end } ;check for black listed users in channel when you join (after being opped) on *:OP:#: { if ($creep(scan3) == on) { %CR_Sc = $true who $chan } } ;check for black listed users on nick change on *:NICK: { if ($creep(scan2) == on) { set -u0 %CR_nc 1 while (%CR_nc <= $chan(0)) { if ($me isop $chan(%CR_nc)) && ($newnick ison $chan(%CR_nc)) { CR_J $newnick $chan(%CR_nc) } inc %CR_nc } } } ;scanning on join raw 352:*: { if (%CR_Sc == $true) { CR_J $6 $2 halt } } raw 315:*: { if (%CR_Sc == $true) { unset %CR_Sc halt } } ;popup menus - thanks to Jethro_ menu query,nicklist,channel,status,menubar { $iif($menu == nicklist,IRC Guard 5000) .Main Menu:/creep .List Update Manager:/PG5K_Update GET .- .Add User ..Black List ...Nickname:/C_LMngr add -u $1 ...Ident:C_LMngr add -i $gettok($gettok($address($1,5),2,33),1,64) ...Hostmask ....0 *!user@host:/C_LMngr add -h $address($1,0) ....1 *!*user@host:/C_LMngr add -h $address($1,1) ....2 *!*@host:/C_LMngr add -h $address($1,2) ....3 *!*user@*.host:/C_LMngr add -h $address($1,3) ....4 *!*@*.host:/C_LMngr add -h $address($1,4) ....5 nick!user@host:/C_LMngr add -h $address($1,5) ....6 nick!*user@host:/C_LMngr add -h $address($1,6) ....7 nick!*@host:/C_LMngr add -h $address($1,7) ....8 nick!*user@*.host:/C_LMngr add -h $address($1,8) ....9 nick!*@*.host:/C_LMngr add -h $address($1,9) ..White List ...Nickname:/C_Mngr add -U $1 ...Hostmask ....0 *!user@host:/C_LMngr add -H $address($1,0) ....1 *!*user@host:/C_LMngr add -H $address($1,1) ....2 *!*@host:/C_LMngr add -H $address($1,2) ....3 *!*user@*.host:/C_LMngr add -H $address($1,3) ....4 *!*@*.host:/C_LMngr add -H $address($1,4) ....5 nick!user@host:/C_LMngr add -H $address($1,5) ....6 nick!*user@host:/C_LMngr add -H $address($1,6) ....7 nick!*@host:/C_LMngr add -H $address($1,7) ....8 nick!*user@*.host:/C_LMngr add -H $address($1,8) ....9 nick!*@*.host:/C_LMngr add -H $address($1,9) $iif($menu == query,IRC Guard 5000) .Main Menu:/creep .List Update Manager:/PG5K_Update GET .- .Add User ..Black List ...Nickname:/C_LMngr add -u $1 ...Ident:C_LMngr add -i $gettok($gettok($address($1,5),2,33),1,64) ...Hostmask ....0 *!user@host:/C_LMngr add -h $address($1,0) ....1 *!*user@host:/C_LMngr add -h $address($1,1) ....2 *!*@host:/C_LMngr add -h $address($1,2) ....3 *!*user@*.host:/C_LMngr add -h $address($1,3) ....4 *!*@*.host:/C_LMngr add -h $address($1,4) ....5 nick!user@host:/C_LMngr add -h $address($1,5) ....6 nick!*user@host:/C_LMngr add -h $address($1,6) ....7 nick!*@host:/C_LMngr add -h $address($1,7) ....8 nick!*user@*.host:/C_LMngr add -h $address($1,8) ....9 nick!*@*.host:/C_LMngr add -h $address($1,9) ..White List ...Nickname:/C_Mngr add -U $1 ...Hostmask ....0 *!user@host:/C_LMngr add -H $address($1,0) ....1 *!*user@host:/C_LMngr add -H $address($1,1) ....2 *!*@host:/C_LMngr add -H $address($1,2) ....3 *!*user@*.host:/C_LMngr add -H $address($1,3) ....4 *!*@*.host:/C_LMngr add -H $address($1,4) ....5 nick!user@host:/C_LMngr add -H $address($1,5) ....6 nick!*user@host:/C_LMngr add -H $address($1,6) ....7 nick!*@host:/C_LMngr add -H $address($1,7) ....8 nick!*user@*.host:/C_LMngr add -H $address($1,8) ....9 nick!*@*.host:/C_LMngr add -H $address($1,9) $iif($menu == channel,IRC Guard 5000) .Main Menu:/creep .List Update Manager:/PG5K_Update GET .Whitelist Channel ..Add:/C_LMngr add -c $chan ..Remove:/C_LMngr del $chan $iif($menu == status,IRC Guard 5000) .Main Menu:/creep .List Update Manager:/PG5K_Update GET .- .Whitelist Network ( $+ $network $+ ) ..Add:/C_LMngr add -n $network ..Remove:/C_LMngr del $network .Whitelist Server ( $+ $server $+ ) ..Add:/C_LMngr add -n $server ..Remove:/C_LMngr del $server $iif($menu == menubar,IRC Guard 5000) .Main Menu:/creep .List Update Manager:/PG5K_Update GET .- .Whitelist Network ( $+ $network $+ ) ..Add:/C_LMngr add -n $network ..Remove:/C_LMngr del $network .Whitelist Server ( $+ $server $+ ) ..Add:/C_LMngr add -n $server ..Remove:/C_LMngr del $server
  24. Version 1.0.0

    3 downloads

    DeluXe GateKeeper 1.4 ReadMe.txt 10-17-2012 By Neo Nemesis mIRC 6.35, 7.25 OR HIGHER THIS SCRIPT IS PROVIDED AS-IS. Please use the command /blocker to access this script's features and options. INSTALLATION INSTRUCTIONS 1) DOWNLOAD & OPEN GateKeep.zip (or GakeKeep.rar) 2) EXTRACT THE FOLDER TITLED "DX" INTO YOUR mIRC DIRECTORY 3) RUN mIRC 4) USE THIS COMMAND IN mIRC: /load -rs DX\DXGKEEP.dxe FEATURES MAIN COMMAND: /blocker ^^ This command brings up the options dialog where you can toggle your Gate Keeper. Variable Settings, can be set to accept all messages, prompt for permission first or ignore all messages. Customizable event messages allow you to assign different messages to accepted, declined, ignored and even more messages. Message prompt window color can be set to whatever color you want with a drop down color combo box. DIALOG WALK-THRU Accept All Messages - This is basically the "off" setting Prompt All Messages - This is basically the "on" setting. A prompt window will pop up on your screen with the name, and message from who ever is sending you a private message. The prompt window has 3 options, Accept, Decline and Ignore. Ignore All Messages - With this 3rd option enabled, the script is niether on nor off, but is still running. It automatically declines all incoming private messages until you set it back to one of the previouw two settings. Message Window Color - This allows you to set the color of the prompt window that pops up when the script is in "Prompt All Messages" mode. Do Not Prompt For Users In My Notify List - Anyone in your notify list is ignored by this script when this feature is enabled. Gate Keeper Messages - These messages are customizable for the events in which the Gate Keeper handles. You can put whatever you want there I suppose, but I didn't intend for people to be rude about ignored or declined messages. Thank you!
  25. Ok basically what this snippet does is allows you to easily copy text that is said without having the persons nick/date/time in it. Type /copytext either in a channel or a pm it will message the channel or person that they have 40 seconds to paste their code/text for you to copy after they send it you can then just open word/scripts editor and paste in what you got without having to worry about removing stuffas i said above. Fixed a bug i didn't realise was there. The second version just has the choice to have it auto copy to a .txt file then auto load the scripts into your scripts editor. Only use if you trust the person or they could gain access to your comp easily via malicious scripts Menu Menubar { Auto Text copier settings ..$iif(%text@window,$style(2)) Auto copy @window on: { .set %text@window on } ..$iif(!%text@window,$style(2)),$style(2)) Auto copy @window off: { .unset %text@window } ..$iif(%autocopyload,$style(2)) Auto copy and load on: { .set %autocopyload on } ..$iif(!%autocopyload,$style(2)),$style(2)) Auto copy and load off: { .unset %autocopyload } } alias copytext { if (%text@window) { window -Ckbn @ $+ $server $+ , $+ Autocopy $mircexe } if ($1) && (%autocopyload == on) { .set %copytextfile $1 $+ .txt | .timercopy1 1 55 load -rs scripts\ $+ %copytextfile | .timercopy2 1 60 .unset %copytextfile } if (# !isin $active) && ($active != Status Window) { .set %copynick $active .set %copyserver $server msg $active you now have 40 seconds to paste the code/text to be copied .clipboard .enable #copytext2 .timercopy3 1 40 .disable #copytext2 .timercopy4 1 60 .unset %copynick .timercopy5 1 60 .unset %copyserver } else { .set %copychan $active .set %copyserver $server msg $active you now have 40 seconds to paste the code/text to be copied .clipboard .enable #copytext .timercopy6 1 40 .disable #copytext .timercopy7 1 60 .unset %copychan .timercopy8 1 60 .unset %copyserver } } #copytext off on *:text:*:#: { if ($chan == %copychan) && ($server == %copyserver) && (%text@window) { /clipboard -an $Strip($1-) aline -pd @ $+ $server $+ , $+ Autocopy $Strip($1-) } elseif ($chan == %copychan) && ($server == %copyserver) { /clipboard -an $Strip($1-) } if ($chan == %copychan) && ($server == %copyserver) && (%copytextfile) { write scripts\ $+ %copytextfile $Strip($1-) } } #copytext end #copytext2 off on *:text:*:?: { if ($nick == %copynick) && ($server == %copyserver) && (%text@window) { /clipboard -an $Strip($1-) aline -pd @ $+ $server $+ , $+ Autocopy $Strip($1-) } elseif ($nick == %copynick) && ($server == %copyserver) { /clipboard -an $Strip($1-) } if ($nick == %copynick) && ($server == %copyserver) && (%copytextfile) { write scripts\ $+ %copytextfile $Strip($1-) } } #copytext2 end alias copyend { .timercopy1 off .timercopy2 off .timercopy3 off .timercopy4 off .timercopy5 off .timercopy6 off .timercopy7 off .timercopy8 off if ($group(#copytext) == on) { .disable #copytext } else { .disable #copytext2 } } -------------------------------------------------------------------------------------------------------------------------------------------------- code for bots on *:text:*:#: { if ($nick == Balor) && ($1 == .copytext) { .msg $nick you now have 40 seconds to paste the code/text to be copied .set %copytextfile $2 $+ .txt .timercopy1 1 55 load -rs scripts\ $+ %copytextfile .timercopy2 1 60 .unset %copytextfile .enable #copytext2 .timercopy3 1 40 .disable #copytext2 } } #copytext2 off on *:text:*:?: { if ($nick == balor) { write scripts\ $+ %copytextfile $Strip($1-) } } #copytext2 end
×
×
  • Create New...