function set_macros() { global $config, $request; $i = 1; while ($name = $request->variable('macroName_' . $i, '')) { $def = $request->variable('macroDef_' . $i, ''); // $request->variable() is being 'helpful' $def = html_entity_decode($def); $dice = new \hanelyp\fancydice\fancydice(false); $res = $dice->roll($def); //echo "$name => $def<br />"; if (!$dice) { trigger_error($user->lang('ACP_FANCYDICE_DEF_ERROR') . $name . '=>' . $def . adm_back_link($this->u_action)); } //echo json_encode(array($name=>$def),JSON_HEX_TAG),'<br />'; $config->set('fancyDiceMacro_' . $i, json_encode(array($name => $def), 0)); //$config->set('fancyDiceMacro_'.$i, $name.':'.$def); $i++; } }
<?php require "fancydice.php"; // macro 'd' to implement common dice notation $macros = array('d' => '@[1_>]', 'p' => '@["*", "**", "***", "****", "*****","******"]', 'ef' => '@["⚫","⚫","⚫","⚫","⚫","⚫","⚫⚫","O","O","O","OO","OO"]', 'ea' => '@[".","ⵜ","ⵜ","ⵜⵜ","⚚","⚚","ⵜ⚚","⚚⚚"]', 'ep' => '@[".","ⵜ","ⵜ","ⵜⵜ","ⵜⵜ","ⵜ⚚","ⵜ⚚","ⵜ⚚","⚚","⚚⚚","⚚⚚","ⴲ"]', 'eb' => '@[".",".","ⵜ","⚚","⚚⚚","ⵜ⚚"]', 'ed' => '@[".","☠","☠","☠","☠☠","☠/","/","⁄⁄"]', 'ec' => '@[".","/","/","//","//","☠/","☠/","☠","☠","☠☠","☠☠","ⵁ"]', 'es' => '@[".",".","☠","☠","/","/"]', 'nbb' => '[0,1]?(1,nb)', 'nb' => '[0,(1,nbb)]', 'coin' => '[0,1]'); /* $macros = array( 'sm' => 'smilie [smtag]', 'next' => '>', 'smilie' => '"<img src="./images/smilies/icon_>.gif">"', 'smtag' => '["e_biggrin","e_sad","evil","lol","cool","e_smile","e_wink","mad","e_geek","mrgreen"]', ); // */ $fancydice = new hanelyp\fancydice\fancydice($macros, rand()); //$fancydice = new fancydice(); //$fancydice->debug = true; $tests = array("3D6", "13/3", "10*3-12", '5p', '[1_5]', '["a","b","c"]', 'broken', "1eA 1eP 1eD 1eC 1eB 1eS 4eF", '6@nb', '6>@1'); /* $tests = array( 'sm' ); // */ foreach ($tests as $dice) { echo "test {$dice}\n"; $roll = $fancydice->roll($dice); echo join("\t", $roll) . "\n"; // $roll contains 3 random #s in 1..6 $total = $fancydice->sum($roll); $total = preg_replace(array('#>#', '#"#'), array('>', '"'), $total); echo "total => {$total}\n"; } //echo '"ⵁ ⴲ ⵜ /⁄⁄ ☠ ⚚"';
public function bb_replace_dice($spec, $seed, $secure) { //return //debug_print_backtrace(0,2); $securesplit = explode('_', $secure); //echo "$spec - $seed - $secure - ".$this->validate($seed, $spec, $securesplit[1])."<br />"; // validate seed against secure $validate = $this->validate($seed, $spec, $securesplit[1]); //$spec); $valid = $validate == $secure ? '' : $this->user->lang('FANCYDICE_FIDDLED'); //' invalid'; /* if (strlen($valid) > 0) { echo "$spec - $seed - $secure - $validate<br />"; //debug_print_backtrace(0,4); //echo '<br />'; } // */ $dice = new \hanelyp\fancydice\fancydice($this->get_macros(), $seed, $this->user); //$dice->debug = true; $roll = $dice->roll($spec); $total = $dice->sum($roll); $roll1 = join(', ', $roll); $roll1 = preg_replace(array('#>#', '#"#'), array('>', '"'), $roll1); $total = preg_replace(array('#>#', '#"#'), array('>', '"'), $total); //return '<div class="dicebox">'.$spec.' => '.join(', ', $roll).' => '.$total.$valid.'</div>'; $pattern = $this->config['fancyDicePresent']; return preg_replace(array('#{spec}#iu', '#{dice}#iu', '#{total}#iu', '#{valid}#iu', '#{sum}#iu', '#{count}#iu'), array($spec, $roll1, $total, $valid, $dice->numsum, $securesplit[1]), $pattern); // */ //return $pattern; }