Добавить макрос

Как я понял, макросы находятся здесь – pre_wacko.php .
Я добавлял макросы типа "frauss", но мне нужно нечто другое – чтобы внутри него были переменные.
Например, #1d5# – выводит случайное число от 1 до 5. (система дайсов ДнД).
Пробовал сделать в actions:


<?
# a=1 b=3
# куб будет кинут один раз, числа в лимите до трёх
print "<em><font color='green'>".$a."d".$b."(";

if(
$a>1){
for(
$i=1;$i<=$a;$i++){
$chislo[$i]=rand(1,$b);
$summa+=$chislo[$i];
print 
$chislo[$i].", ";}
} else {
$chislo=rand(1,$b);
$summa+=$chislo;
print 
$chislo;}

print 
") = ".$summa."</font></em>";


Он работает, но каждый раз после перезагрузки страницы выводит новое значение.
А мне нужно, чтобы он сохранял значение в бд в виде, например:
10d10(6, 9, 7, 7, 8, 8, 4, 9, 9, 7, ) = 74
И чтоб сохраняло как строку.
подскажите, как сделать это в виде макроса.

Comments

  1. Template versus Macro

    The first question is about the use case. Then how this can be implemented in a general way so the macro can be used together with / as a template stored somewhere else.

    -> Wacko-Preformatter

    working example only as proof of concept
    ::§::

    /formatters/pre_wacko.php

    <?php
     
    // [..]
                # test template
                else if ($thing == '::§::')
                {
                    $a = 10;
                    $b = 10;
                    $summa = '';
                    $output = "//!!(green)".$a."d".$b." (";
     
                    if ($a > 1)
                    {
                        for($i = 1; $i <= $a; $i++)
                        {
                            $chislo[$i]    = rand(1, $b);
                            $summa        += $chislo[$i];
     
                            $output        .= $chislo[$i].", ";
                        }
                    }
                    else
                    {
                        $chislo = rand(1, $b);
                        $summa  += $chislo;
     
                        $output .= $chislo;
                    }
     
                    $output .= ") = ".$summa."!!//";
     
                    return $output;
                }
    // [..]
     
    ?>


    patch
    diff --git a/wacko/formatters/pre_wacko.php b/wacko/formatters/pre_wacko.php
    --- a/wacko/formatters/pre_wacko.php
    +++ b/wacko/formatters/pre_wacko.php
    @@ -47,6 +47,36 @@
                 {
                     return sprintf($wacko->config['name_date_macro'], '((user:'.$wacko->get_user_name().' '.$wacko->get_user_name().'))', date($wacko->config['date_macro_format']));
                 }
    +            # test template
    +            else if ($thing == '::§::')
    +            {
    +                $a = 10;
    +                $b = 10;
    +                $summa = '';
    +                $output = "//!!(green)".$a."d".$b." (";
    +
    +                if ($a > 1)
    +                {
    +                    for($i = 1; $i <= $a; $i++)
    +                    {
    +                        $chislo[$i]    = rand(1, $b);
    +                        $summa        += $chislo[$i];
    +
    +                        $output        .= $chislo[$i].", ";
    +                    }
    +                }
    +                else
    +                {
    +                    $chislo = rand(1, $b);
    +                    $summa  += $chislo;
    +
    +                    $output .= $chislo;
    +                }
    +
    +                $output .= ") = ".$summa."!!//";
    +
    +                return $output;
    +            }
                 else if ($thing == '::+::')
                 {
                     return date($wacko->config['date_macro_format']);

    • WikiAdmin
    • edited
  2. as after macros get variable (var)?

    Благодарю, но вопрос был ещё в таком: как через макросы передавать переменные?
    Thank you, but question : as after macros get variable (var)?

    Например:
    For Example:

    ::10d10::

    Результат:
    Result:
    10d10(6, 9, 7, 7, 8, 8, 4, 9, 9, 7) = 74

    • frauss
    • edited
  3. Regex and preg_match

    Encapsulate the vars and get them via regex for processing like its done for actions.

    ::patterns::
    else if (preg_match(

    It would be nice if someone takes the time to create a general blueprint for this issue.

    • WikiAdmin
    • edited