Ok, here's what I've come up with and it's seemingly working.
To make it as a custom island, first, you need to create a template file, I called mine "island_top_posters_30.tpl"
This file should have this content in it.
{* Script Version 7.3 *}
<?php if(!defined('UBB_MAIN_PROGRAM')) exit; ?>
{$tbopen}
{section name=user loop=$users}
<div style="float:right">{$users[user].posts}</div>
<a href="{$config.BASE_URL}/ubbthreads.php?ubb=showprofile&User={$users[user].uid}">{$users[user].name}</a><br />
<div style="clear: both"></div>
{/section}
{$tbclose}
This file should be saved in /templates/default directory.
You can name it whatever you want, you just need to match the name in this next bit, which is what you will put into your custom island.
In the custom island, replace the entire contents with the following code...
$days = 30;
if (!defined('UBB_MAIN_PROGRAM')) {
exit;
}
$today = $html -> get_date();
$limittime = ($today - ($days * 86400));
$query = "
SELECT
COUNT(*) as total, p.USER_ID, u.USER_DISPLAY_NAME,
u.USER_MEMBERSHIP_LEVEL, up.USER_NAME_COLOR
FROM {$config['TABLE_PREFIX']}POSTS as p,
{$config['TABLE_PREFIX']}USERS as u,
{$config['TABLE_PREFIX']}USER_PROFILE as up
WHERE u.USER_ID = up.USER_ID
AND p.POST_POSTED_TIME > $limittime
AND p.USER_ID != 1
AND p.USER_ID = u.USER_ID
GROUP BY p.USER_ID ORDER BY total DESC
limit {$config['TOP_POSTERS']}
";
$sth = $dbh->do_query($query);
$users = array();
$i = 0;
while(list($total,$uid,$username,$memberlevel,$namecolor) = $dbh->fetch_array($sth)) {
$users[$i]['namecolor'] = $html->user_color($username, $namecolor, $memberlevel);
$users[$i]['name'] = $username;
$users[$i]['posts'] = $total;
$users[$i]['uid'] = $uid;
$i++;
} $smarty->assign("users",$users);
$island = $smarty->fetch("island_top_posters_30.tpl");
lock_and_write("{$config['FULL_PATH']}/cache/top_post_30.php",$island);
@chmod("{$config['FULL_PATH']}/cache/top_post_30.php",0666);
$body = <<<EOF
<?php include("/your server path here/cache/top_post_30.php") ?>
EOF;
What it does is when it fires based on the timings you've placed, it uses the "island_top_posters_30.tpl" file as a template to create some html code. it then saves this code in your cache directory as "top_post_30.php" or you can change this to be whatever you want as well. It also chmods it so it's usable, and then creates html content and just sucks in the contents of that file for display.
Thing to note is that you need to use your own server path rather than what I wrote near the bottom..i.e. replace "your server path here" with your server path.
I am by no means a fully proficient php coder, I'm more an engineer who can take existing things and make tweaks to get what I want out of them, so, if I've got "not so elegant" codign practices...this is why. Lord knows I couldn't sit down and yield this stuff from scratch.
If one of you more proficient coders notices any major issues, by all means feel free to post corrections...I'm all about function, not form and won't have feelings hurt

One final note, the # of people listed is pulled from the Portal Settings page, the # contained within the Top Posters field. I think it makes for a nice symmetry that if you're running both total top posters and top posters over X days that they have the same # of users listed.