<?php function nassau_dice_filter($o) { $preg = '/\[dice=(?<num>\d*)[kd](?<dice>\d+)\]((?<res>[^\[]*)\[\/dice\])?/i'; $o->Msg = preg_replace_callback($preg, 'nassau_dice_parse', $o->Msg); } function nassau_dice_parse($m) { if (false == empty($m['res'])) return $m[0]; $dice = $m['dice']; $num = $m['num'] ? $m['num'] : 1; $sum = array (); foreach (range(1, $num) as $_) $sum[] = rand(1, $dice); $sum = implode(', ', $sum) . ' ยป ' . array_sum($sum); return sprintf('[dice=%dd%d]%s[/dice]', $num, $dice, $sum); } function nassau_dice_format(&$data) { $msg = $data['message']; $rep = preg_replace('/\[dice=(\d*[kd]\d+)\]([^\[]+)\[\/dice\]/i', '<span style="background:#0080FF;color:white;padding:1px 4px;border-radius:6px;">Rolled [$1]: $2</span>', $msg); $data['message'] = $rep; } UnbRegisterHook('post.beforeadd', 'nassau_dice_filter'); UnbRegisterHook('post.beforechange', 'nassau_dice_filter'); UnbRegisterHook('post.postparse', 'nassau_dice_format');