Hey guys, sorry for that negative rant back there in January 2006, don't take it too seriously please :)
jaytea is right, I must have been ticked off that day, lol, embarrassing to read it in retrospect!
hixxy, I'm trying to remember your previous nickname, I've seen it in countless posts, and on the tip of my tongue, but can't quite get it.
What a great time it was in those years, back in university, all I did was go out and if i wasn't out, i was spending time on IRC. In the early years on Dalnet heavily into DBZ under the alias Perfecta_Cellka or later Cellka where I was a SOP on #dbzirc and co-founder of #dbzmedia.
FiberOPtics was my scripting alter ego that I used in the mirc.com message boards, already then I didn't chat much, but the scripting was too much fun. My education and jobs have no link to coding or anything like that, but 2 years ago, for fun, decided to learn python, I missed scripting. Made an IRC chat client, a webpage with python backend, and most recently I'm using it for home automation. Guess the tinkering with code will never die.
Some of my favourites and most memorable scripters were qwerty, Online, jaytea, Iori/Pai, myndzi, Hammer. In later generations I know myggan & hixxy were also very good. I'm sure there were so many more but those names I can remember easily!
jaytea, remember when qwerty was challenging us on the regex commatizer? Man those were the days!
Have fun :)
You don\'t understand.
It\'s not so much the fact that I got a 6, although it is far beneath what it is worth, no matter if I\'m the author, I\'m objective enough to know quality code when I see it.
My gripe is that I get a grade that is only just above some of the absolute garbage that gets posted here. I don\'t know about others, but for me, that is completely insulting. You know, my code actually works! Some of the snippets that got submitted here this week don\'t even work properly, or are suffering from design mistakes that shouldn\'t be there in the first place. That\'s why I was mad, I\'m almost getting the same score as those people, and they can\'t even script!
The score of a snippet says something about the quality of the snippet, of the code, of its usefulness, on how much care the author used when creating the snippet. Do you know how much time I spent on writing the documentation for my snippets? Take a look at my $fileinfo snippet, writing the documentation for that took longer than writing the code.
Anyway, what bothers me the most is that people who don\'t have a clue about mIRC scripting have the ability to grade me with whatever score they want.
Unfortunately, I\'m not the kind of person that can cope with something like that, I don\'t want just anyone grading my code, when I know I\'m 10x better at scripting than the person grading me in the first place. I feel like a professor getting graded a D by a freshman student.
You may call that childish if you wish, but that\'s simply how I perceive things. I\'m not going to beg people to give me a big score, so the only thing to prevent getting a low score is simply no longer submitting code.
I\'m aware my reaction was a overly dramatic, but to be honest I was seriously pissed off, because that\'s the kind of person I am when things happen that I don\'t agree with. I\'m aware that when you\'re pissed of, your not nearly as rational as you are in normal situations. So yes, I did overreact.
I\'m keeping the rest of my snippets for sites where only qualified people may grade submissions, and where people appreciate good code.
I have nothing further to say.
Btw, giving this snippet a 6 is an insult to me.
The error checking alone for this snippet is more code than some of the stuff some people submit here, and it\'s 10x more innovative than something like a \"random nick colorer\" the snippet before this that got a 5. Preposterous.
Do you people think you can just come up with functionality like this as if it\'s nothing?
This is complete bullshit, goodbye hawkee.com.
You can simplify your looping process if you start at var %i = 1 and loop through $disk(%i), since $disk accepts either a name like c: or a number N which represents the N\'th drive. Let me illustrate:
var %i = 1
while (!$disk(%i)) inc %i
; stuff with $disk(%i).[property]
But anyway, once again there is a fundamental design flaw in this, because if you have a floppy inserted in your a: drive, then it will return stats about this floppy drive instead of your c: drive.
Furthermore, as in my case, you may have disk partitions, of which we won\'t get to see any statistics with your code, only of the first partition.
It would be much more convenient, if you made an identifier that takes as parameter the path to the drive, such as c or d, and that your snippet returns the same stats as now, but for the specified drive.
In other words $diskstats() instead of just $diskstats.
Author: FiberOPtics Email: mirc.fiberoptics@gmail.com Usage: /pause <s|ms> <N>, where s stands for seconds, and ms for milliseconds. Examples: //echo -a hi | pause s 3 | echo -a sup //echo -a 1 2 3... | pause ms 1500 | echo -a 4 Purpose: Will pause the script engine on the current thread from processing, until the specified interval in seconds "s" or milliseconds "ms" has passed. Reqs:..
Btw the same recursion happens for example with filter and the -k flag.
Try:
alias test filter -fk $mircini test
Basically, the same case where the alias is called but not directly from the alias, rather it\'s filter that calls test here, which in term calls the filter again, which in term calls test again, etc, infinite recursion, making your mIRC crash.
Same example as the /scon or /scid case.
Here\'s another fun one:
alias test1 test2
alias test2 test1
(the above example used to work fine in older versions for 500 calls or something then it stopped, but in the current version it just crashes instantly)
Oh btw, I forgot to mention, there is a HUGE mistake in your code.
$scon(0) returns the total amount of open server windows. Let\'s say this is 3.
You are looping from %t = 1 till 3 then, with %t being 1, 2, 3.
You then do: scid %t, which will set the active server window to the one that has as $cid the value %t.
BUT!!!
The $cid of a server window, is a gloval variable in mIRC internal\'s, that is not reset until you close mIRC. When you open a new server window, mIRC checks this value, increments it, and assigns the new value as the $cid to this server window.
Let me illustrate where I am going with this:
->You have 2 server windows open, with $cid\'s 1 and 2.
->You close server window 2, and then open a new one.
-> The new one now has $cid 3, but you still only have 2 server windows open, with $cid\'s 1 and 3.
Do you notice how when you are looping, you will try to do \"scid 2\" which will try to set the active connection to a server window that doesn\'t exist!
The trick here is not to use /scid, but to use /scon. /scid takes a $cid, whilst /scon takes a number that represents the N\'th window, which is what you are looking for.
In our example, when you do scon %c, it will set it to the second server window, which is the one with $cid 3.
You can simply do:
alias amsgx var %msg = $1- | scon -at1 amsg % $+ msg
alias amex var %msg = $1- | scon -at1 ame % $+ msg
It\'s really a bad idea to name your aliases the same as the built-in aliases, because now when someone does an /ame, it will do it on all server windows.
The reason that I use a variable and escape it in the code like that, is because there is danger of dubble evaluation when using the scon/scid commands. This is illustrated when doing: //scon -a echo -a $!me
Additionally, you are not checking $status on each server, which will result into an error when you try to describe or message a channel on an offline server window.
Also, as I stated in another comment section, $chan() doesn\'t make a distinction between channels that you are in, and those that were left open after a disconnect (channels you are no longer in, in other words), so you should loop with $comchan($me,%x)
But anyway, like said, looping isn\'t needed at all.
Btw if you decided to recreate the aliases to use scon -at1 ame/amsg, then you MUST escape the ame/amsg commands by prefixing them with a ! or it would close your mIRC because of infinite recursion.
Example:
alias amsg var %msg = $1- | scon -at1 !amsg % $+ msg
alias ame var %msg = $1- | scon -at1 !ame % $+ msg
Yikes that url didn\'t get formatted.
Btw you should loop through $comchan($me,%i) instead of $chan, because $chan makes no distinction between channels that you are in, and channels you are not in. When you disconnect from IRC, and have the optoin \"keep channels open\", and you reconnect, without rejoining those chans, those channel windows stay open and $chan includes those.
$comchan($me,N) only takes into account actual online channels.
The reason why you get errors when not using the correct syntax is explained here
What do you mean \"it\'s easy\"? Of course it is, you just put built-in identifiers in a few aliases that echo instead of return the value.
I think people can type //echo -a $sin().deg theirselves, or make a small custom alias theirselves to echo instead of return the value.
I don\'t understand why you would submit something like this, I mean, you could start submitting stuff like this for every built-in identifier... pointless.
Here\'s my newest mathematical snippet! alias calcit echo -a $calc($1)
I\'m not trying to hurt your feelings or anything, but honestly, is this a joke or are you for real about this?
Btw, on another note:
$regex always returns a digit in range 0-, in other words, you don\'t need to check for > 0.
In an if statement, when checking a value like: if (value)
the condition evaluates to $true when the value is not 0, not $false, and not $null. In the same way, the if statement returns $false, if the value was either 0, $false, or $null.
Since $regex is always a digit, we can already rule out the $true and $false, leaving us with only the digit 0 to make the if condition false.
Therefore \"if ($regex([name],value,))\" is sufficient.
There is an error in the description, where it says it works with atleast 50 numbers. Try this:
//echo -a $bytes(99999999999999999,b)
Result: 100,000,000,000,000,000
$bytes has trouble with rounding at 16 digits, and over 17 it start screwing up severly.
Try:
//echo -a $bytes(10000000000000000000000000,b)
Result:
10,000,000,000,000,001,000,000,000
See that 001 in the forth to last trio of digits?
That\'s why I made that $comma identifier, it gives support for an unlimited amount of numbers, as long as it\'s within the string too long limit.
You should always put your expressions between slashes / /
before you run into this situation:
//echo -a $regex(a,moo)
and wonder why it says there is 1 match...
Also, when you create regexes that capture a pattern, it\'s also a good idea to name your regexes, because everytime a regex captures, it overwrites the old results in $regml.
In cases where you are not planning to reference the captured results later with $regml, it is more efficient to create an uncapturing expression:
(?:L|l) instead of (L|l)
but anyway you should just use the i modifier which will make your expressoin case insensitive:
From: if ($regex($1-,(L|l)(O|o)(L|l)) > 0) {
to
if ($regex($1-,/lol/i)) {
The i modifier tells the regex engine that the specified alpha chars are case insensitive.
I could go on and on and give tips for improvement, but that would end up being a tutorial, something that already exists.
Author: FiberOPtics -- mirc.fiberoptics@gmail.com Usage: 1) $fileinfo(filepath, properties [,separator])[.raw] Will retrieve information about a file. The possible properties are listed further below. 2) $findfileinfo( initialize, properties [, seperator])[.raw] $findfileinfo() $findfileinfo(quit) Findfileinfo is specifically designed to be used when you want to retrieve properties about files from..
Author: FiberOPtics -- mirc.fiberoptics@gmail.com Usage: $specialfolder(folder) or /specialfolder folder Purpose: Returns the path of a Windows Special Folder. This has the same functionality as nLINKn's specdir function, however with the use of COM instead of with a DLL. Categories: AllUsersAppdata AllUsersDesktop AllUsersFavorites AllUsersPrograms AllUsersStartMenu AllUsersStartup Appdata Comspec Cookies Desktop Favorites Fonts History Internetcache LocalAppdata MyDocuments MyPictures Nethood Printhood ProgramFiles Programs Recent Sendto StartMenu Startup System Templates Userprofile Windir Requirements: 17..