Here's the mod to make money bet on vbookie events go to the bookie, and to have any winnings paid out from the bookies money. If the bookie can't afford to pay the winnings, their cash is set to zero. If you're using vbbux, money will be taken from the bank if possible.
Backup your files before making these changes! I've only tested this on my own site (3.5.4), so proceed with caution!
First, open includes/functions_vbookie.php and find:
Above, add:
Code:
// psybernaut mod
function vbookie_take_bookie_cash($userid, $amount)
{
global $vbulletin;
$bookie = $vbulletin->db->query_first("SELECT * FROM " . TABLE_PREFIX . "user WHERE userid=$userid");
switch ($vbulletin->options['vbookiecash'])
{
case 'vcash':
if($amount > $bookie['vbookie_cash'])
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbookie_cash=0 WHERE userid=$userid");
}
else
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbookie_cash=vbookie_cash-$amount WHERE userid=$userid");
}
break;
case 'ucash':
if($amount > $bookie['ucash'])
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET ucash=0 WHERE userid=$userid");
}
else
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET ucash=ucash-$amount WHERE userid=$userid");
}
break;
case 'ebux':
if($amount > $bookie['ebux'])
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET ebux=0 WHERE userid=$userid");
}
else
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET ebux=ebux-$amount WHERE userid=$userid");
}
break;
case 'custom':
($hook = vBulletinHook::fetch_hook('vbookie_take_bookie_cash')) ? eval($hook) : false;
}
}
Next, open vbookie.php and find:
Code:
// actually pay the money ;)
vbookie_give_user_cash($bet['userid'], $amount_to_pay);
Below, add:
Code:
// psybernaut's mod
vbookie_take_bookie_cash($threadinfo['postuserid'], $amount_to_pay);
Then find:
Code:
vbookie_take_user_cash($total_stake);
Below, add:
Code:
// psybernaut's mod
vbookie_give_user_cash($threadinfo['postuserid'], $total_stake);
That's it! ...unless you're using vbBux (by setting vbookie to a custom point system and using CMX's hooks), then you need a couple more mods...
Open includes/xml/hooks_bookiehack.xml and find:
Code:
<hook>vbookie_take_user_cash</hook>
Below, add:
Code:
<hook>vbookie_take_bookie_cash</hook>
Last of all, you need to add a new plugin to hook into vbBux... Go to Plugin System->Add New Plugin and add a plugin with the following details:
Product: vBulletin
Hook Location: vbookie_take_bookie_cash
Title: vBookie With vbPlaza - Take Bookie Cash
Plugin PHP Code:
Code:
// take the bookies money
$bookie = $vbulletin->db->query_first("SELECT * FROM " . TABLE_PREFIX . "user WHERE userid=$userid");
if($amount > $bookie['vbbux'])
{
$amount = $amount - $bookie['vbbux'];
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbbux=0 WHERE userid=$userid");
if($amount > $bookie['vbbank'])
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbbank=0 WHERE userid=$userid");
}
else
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbbank=vbbank-$amount WHERE userid=$userid");
}
}
else
{
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET vbbux=vbbux-$amount WHERE userid=$userid");
}
That should do the trick! Well, it works for me at least... YMMV
I've made another fix for timezones that are not a round integer (we live in a +9.5 timezone and it caused some issues that needed fixing). I'd be interested in putting out a new release with this fixe in it and the above mod included in a tidier form (eg. admin option to turn it on/off etc). Can anyone point me to some info on how to go about taking over responsibility for this mod, that's assuming Andreas is willing to hand it over of course... I'm not looking to step on toes
EDIT: Updated the vbbux hook to deduct money from the bookie's bank account if they don't have enough cash on hand.