KalDLL Pro: Customization

kaldll_6The functionality of the DLL grew and grew as more people asked for more features.

One of these features was a better uptime counter, since the function I was using was GetTickCount(), with 32 bits representing milliseconds, it was limited for 49.7 days before it would rollover back to the beginning again.

kaldll_7I found a value in the registry that was updated regularly and was used to store a 64 bit uptime, though it was documented as not reliable to use on all system.

This new uptime counter allowed up 585 million years to pass before a rollover, which for systems using Windows, was very doubtful would be able to achieve.

kaldll_13Eventually it was requested for KalDLL to also have the ability to output information about what is currently playing in Winamp.

So after a bit of research again, I found that using the Windows message system, I could retrieve information about the current song and artist being played in Winamp.

KalDLL Pro

kaldllpro_1Expanding on my idea of KalDLL, I began adding additional features to it. One of which was the ability to display system stats.

I found some code on the internet which would, using assembly, retrieve information about the CPU.

Further expanding my understand of using C++, I began using the CreateWindow() API to create buttons, lists and text boxes for input, and the WM_PAINT message for drawing images.

kaldll_14My first attempt at this gave the looked of a low memory system, unless I managed to change the font object being used.

With a slightly improved version, it was possible to create custom “/<command>” for mIRC that could be formatted to output specific information from one of the many libraries I had added to KalDLL.

KalDLL and the Away Beep

kaldll_9This origin of this DLL came from the Away Beep script I original wrote in mIRC.

It all started when I was on IRC I wanted to get someones attention, it was quite important at the time since they were my web host and they hadn’t payed their bill so my sites were down.

But despite efforts to get their attention, they were AFK, so I began work on a mIRC script that would play a few beeping sounds if a certain character string was typed.

kaldll_10The script became quite popular on the IRC channel and eventually spread to other channels and servers.

I eventually made if so that you activate the beep, you needed to send “@<username>” where “<username>” is the name of the person your trying to get the attention of. So for me, it was “@Kaluriel

There was a limitation to the script though, which was that it wasn’t asynchronous to mIRC so everything frozen until it had done.

kaldll_12

And if multiple people had spammed it, you could be stuck and eventually disconnected from the server for not replying to a PING message.

So I began work on a plugin for mIRC that would multithread this process, and give better control over composing. So I began work on KalDLL.

I don’t have any images of the KalDLL version of away beep so I’ve substituted with the KalDLL Pro version, theres not much difference, I kept the same style during the port over.

Al Bhed Translator

Al Bhed TranslatorAn encoder / decoder for the Final Fantasy 10 language of Al Bhed. This small script I wrote which converts Al Bhed into English, and English into Al Bhed, the one main downside to the script is that all the letter changes are hardcoded as they are random.

Not really useful, but it was the first script I wrote for mIRC. Although being pointless, it did lead to more scripting being wrote, such as Away Beep, and eventually KalDLL.

; --- [ decode ] ----------------------------------------
on *:TEXT:*:#:{
if (AlBhed: isin $1-) {
var %decode obmdyjgnawkscripqhltezvxuf
var %text $lower($2-)
var %length $len(%text)
var %out
var %pos 1
 
while (%pos <= %length) {
var %value $mid(%text,%pos,1)
if (%value != $chr(32)) {
%value = $asc(%value) - 96
%out = %out $+ $mid(%decode,%value,1)
}
else {
%out = %out $chr(32)
}
inc %pos
}
echo $chan 12AlBhed: %out
}
}
 
; --- [ encode ] ----------------------------------------
alias albhed {
var %encode ibmduzgrofkschapqnltywjxev
var %text $lower($1-)
var %length $len(%text)
var %out
var %pos 1
while (%pos <= %length) {
var %value $mid(%text,%pos,1)
if (%value != $chr(32)) {
%value = $asc(%value) - 96
%out = %out $+ $mid(%encode,%value,1)
}
else {
%out = %out $chr(32)
}
inc %pos
}
 
say 4AlBhed: %out
}