Hallo,
ich habe folgenden PHP Quellcode:
Alles anzeigen
Mein Ziel ist es, wenn in einem String der Text /roll ZahlZaheln+/-Zahl vorkommt, dann gibt er mir ZahlWZahlen Zahl mal Zufallszahl zwischen 1 und Zahlen und zum schluss alle Ergäbnisse zusammen +/- Zahl.
Bei - funktioniert es wunderbar und ich bekomme EINEN korrekten Wert zurück.
Bei + jedoch nicht, da bekomme ich alle Ergäbnisswerte(als eine Summe) und die dazu zu addierende Zahl. (ca. so bei ergäbnissen 2,9,3 und modifikator +2 bekomme ich 14 2, bei einem modifikator von -2 kommt dan 12 heraus.)
Ich habe keine Ahnung was PHP da hat und habe schon vieles herumprobiert, z.B. die Konvertierung durch pow(wert, 1) zu erzwingen, kein Erfolg.
#EDIT
Problem irgentwie durch irgentetwas gelöst, wodurch wösste ich aber selber gerne.
Fertiger Quellcode:
Alles anzeigen
ich habe folgenden PHP Quellcode:
Quellcode
- function InputMethods($text)
- {
- $ret = 0;
- $eql = 0;
- preg_match("'/roll[ ]{0,}?([1-9])([^0-9]+)?([2-9][0-9]{0,2})[ ]{0,}?([\+\-][1-9][0-9]{0,})?'is", $text, $ret);
- $rest = (int)$ret[4];
- for($i = 1; $i<$ret[1] + 1;$i++)
- {
- $c = rand(1, $ret[3]);
- $rest += $c;
- $eql .= "[" . $c . "] ";
- }
- $text = preg_replace("'/roll[ ]{0,}?([1-9])([^0-9]+)?([2-9][0-9]{0,2})[ ]{0,}?([\+\-][1-9][0-9]{0,})?'is", "<label id='roll'>Wurf:</label> <label id='roll_tsk'>\\1W\\3</label><br><label id='eql'>Ergäbnis:</label> <label id='roll_eql'>$eql</label><br><label id='eql_all'>Summe: </label><label id='end_all'>$rest</label>", $text);
- return $text;
- }
Mein Ziel ist es, wenn in einem String der Text /roll ZahlZaheln+/-Zahl vorkommt, dann gibt er mir ZahlWZahlen Zahl mal Zufallszahl zwischen 1 und Zahlen und zum schluss alle Ergäbnisse zusammen +/- Zahl.
Bei - funktioniert es wunderbar und ich bekomme EINEN korrekten Wert zurück.
Bei + jedoch nicht, da bekomme ich alle Ergäbnisswerte(als eine Summe) und die dazu zu addierende Zahl. (ca. so bei ergäbnissen 2,9,3 und modifikator +2 bekomme ich 14 2, bei einem modifikator von -2 kommt dan 12 heraus.)
Ich habe keine Ahnung was PHP da hat und habe schon vieles herumprobiert, z.B. die Konvertierung durch pow(wert, 1) zu erzwingen, kein Erfolg.
#EDIT
Problem irgentwie durch irgentetwas gelöst, wodurch wösste ich aber selber gerne.
Fertiger Quellcode:
Quellcode
- function InputMethods($text)
- {
- preg_match("#/roll[ ]{0,}?([1-9])([^0-9]+)?([2-9][0-9]{0,2})[ ]{0,}?([\+\- ][1-9][0-9]{0,})?#is", $text, $ret);
- if($ret[4] > 0)
- {
- $x = " +" . $ret[4];
- }
- else if($ret[4] < 0)
- {
- $x = " " . $ret[4];
- }
- else
- {
- $x = "";
- }
- for($i = 1; $i<$ret[1] + 1;$i++)
- {
- $c = rand(1, $ret[3]);
- $ende += $c;
- $eql .= "[" . $c . "] ";
- }
- $ende += $ret[4];
- $text = preg_replace("#/roll[ ]{0,}?([1-9])([^0-9]+)?([2-9][0-9]{0,2})[ ]{0,}?([\+\- ][1-9][0-9]{0,})?#is", "<label id='roll'>Wurf:</label> <label id='roll_tsk'>\\1W\\3$x</label><br><label id='eql'>Ergäbnis:</label> <label id='roll_eql'>$eql</label><br><label id='eql_all'>Summe: </label><label id='end_all'>" . $ende . "</label>", $text);
- return $text;
- }
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ViktorM ()