anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Programmierer Tools https://anpera.dyndns.org/phpbb3/viewtopic.php?f=43&t=1487 |
Seite 1 von 2 |
Autor: | Eliwood [ Mi 29 Jun, 2005 12:29 ] |
Betreff des Beitrags: | Programmierer Tools |
Hab da 2 Funktionen, mit denen man beim Programmieren z.B. nur schreiben muss, Du nimmst deine {weapon} und schlägst die Türe ein. Die Funktionen (einfach in die common.php nach der Funktion output einfügen): [php] function change_vars_to_text($text,$vartoreplace) { // Change {key} to a Value // By Eliwood // change_vars_to_text([string text],[mixed array]) while(list($key,$val)=each($vartoreplace)) { $text = str_replace("{".$key."}",$val,$text); } $text = preg_replace("/{[^} \t\n\r]*}/i","",$text); return $text; } function output_replace($indata,$priv=false) { // Output with Replace by Eliwood global $output,$session; $replace = array("weapon"=>$session['user']['weapon'] ,"armor"=>$session['user']['armor'] ,"name"=>$session['user']['name'] ,"hitpoints"=>$session['user']['hitpoints'] ,"weapondmg"=>$session['user']['weapondmg'] ,"armordef"=>$session['user']['armordef'] ,"attack"=>$session['user']['attack'] ,"defence"=>$session['user']['defence'] ); $indata = translate($indata); $indata = change_vars_to_text($indata,$replace); $output.=appoencode($indata,$priv); $output.="\n"; return 0; } [/php] Das Array in output_replace kann man beliebig erweitern, Und hoffe (wahrscheinlich wieder vergebens) auf ein Feetback |
Autor: | dragonslayer [ Mi 29 Jun, 2005 13:09 ] |
Betreff des Beitrags: | |
Die Idee so etwas zu implementieren ist ganz nett und könnte ihre Anwendung durchaus finden, zum Beispiel wenn User selbst den Fortgang von Specials vorschlagen können sollen. Im Hinblick auf die Performanz des Spiels würde ich von sowas jedoch abraten, denn somit müsste ja jeder Text nochmals durchgeparsed werden. Da dann auch noch ein preg_replace zu machen ist, ist dabei vielleicht die mächtigste Möglichkeit, aber definitiv die Langsamste! Was besseres fällt mir dabei zugegebenermaßen aber auch nicht ein... Die Idee ist gut, aber da mein Server sowieso schon kreischend an der Leistungsgrenze agiert, würde ich ihn nicht noch durch zusätzliche Ersetzungen belasten wollen. |
Autor: | Eliwood [ Mi 29 Jun, 2005 13:17 ] |
Betreff des Beitrags: | |
dragonslayer hat geschrieben: Die Idee so etwas zu implementieren ist ganz nett und könnte ihre Anwendung durchaus finden, zum Beispiel wenn User selbst den Fortgang von Specials vorschlagen können sollen.
Im Hinblick auf die Performanz des Spiels würde ich von sowas jedoch abraten, denn somit müsste ja jeder Text nochmals durchgeparsed werden. Da dann auch noch ein preg_replace zu machen ist, ist dabei vielleicht die mächtigste Möglichkeit, aber definitiv die Langsamste! Was besseres fällt mir dabei zugegebenermaßen aber auch nicht ein... Die Idee ist gut, aber da mein Server sowieso schon kreischend an der Leistungsgrenze agiert, würde ich ihn nicht noch durch zusätzliche Ersetzungen belasten wollen. Das Preg-replace kann man auskommentieren, is eigentlich nur dafür da, um nicht verwenderte {} zu löschen ![]() Da es eben langsamer is, habs ich nich in die normale Funktion output einbaut und so könnte man die Funktionen auslagern und dann nur in den Scripts, in der diese Funktionen gebraucht werden, einfügen. Ich hab keinerlei Änderungen an der Perfomance gespürt, aber is is mir klar, dass es langsamer is ![]() EDIT: Aber danke fürs Feetback ![]() |
Autor: | Artemis1988 [ So 02 Okt, 2005 21:18 ] |
Betreff des Beitrags: | |
^^ Also bei mir geht das irgendwie nicht! Hab ich was falsch gemacht? Habs im common.php direkt hinter function output gescript! grüße Artemis |
Autor: | Eliwood [ So 02 Okt, 2005 22:11 ] |
Betreff des Beitrags: | |
Artemis1988 hat geschrieben: ^^
Also bei mir geht das irgendwie nicht! Hab ich was falsch gemacht? Habs im common.php direkt hinter function output gescript! grüße Artemis Wenn du noch sagen könntest, was nicht geht, könnte ich auch helfen. Und am besten noch, wie du die Funktion ausprobiert hast. |
Autor: | Artemis1988 [ So 02 Okt, 2005 23:41 ] |
Betreff des Beitrags: | |
habs in die common.php geschrieben dann ingame irgendwo halt den satz von dir getestet ^^ Grüße Artemis |
Autor: | Eliwood [ Mo 03 Okt, 2005 10:59 ] |
Betreff des Beitrags: | |
Artemis1988 hat geschrieben: habs in die common.php geschrieben
dann ingame irgendwo halt den satz von dir getestet ^^ Grüße Artemis ... Wie hast du es ausprobiert? Poste mal den Codeschnippsel. |
Autor: | Tidus [ Mo 03 Okt, 2005 21:31 ] |
Betreff des Beitrags: | |
artemis kanns sein das dus gepostet ahst statt es in ein script einzusetzen???? |
Autor: | Artemis1988 [ Mo 03 Okt, 2005 21:39 ] |
Betreff des Beitrags: | |
[php] function change_vars_to_text($text,$vartoreplace) { // Change {key} to a Value // By Eliwood // change_vars_to_text([string text],[mixed array]) while(list($key,$val)=each($vartoreplace)) { $text = str_replace("{".$key."}",$val,$text); } $text = preg_replace("/{[^} \t\n\r]*}/i","",$text); return $text; } function output_replace($indata,$priv=false) { // Output with Replace by Eliwood global $output,$session; $replace = array("weapon"=>$session['user']['weapon'] ,"armor"=>$session['user']['armor'] ,"name"=>$session['user']['name'] ,"hitpoints"=>$session['user']['hitpoints'] ,"weapondmg"=>$session['user']['weapondmg'] ,"armordef"=>$session['user']['armordef'] ,"attack"=>$session['user']['attack'] ,"defence"=>$session['user']['defence'] ); $indata = translate($indata); $indata = change_vars_to_text($indata,$replace); $output.=appoencode($indata,$priv); $output.="\n"; return 0; } [/php] habe das ins common.php geschrieben nun im spiel ausprobiert nun denke ich, das war nicht richtig ^^ Grüße Artemis |
Autor: | Eliwood [ Mo 03 Okt, 2005 21:46 ] |
Betreff des Beitrags: | |
Ich fragte, WIE du es getestet hast, nicht wie du es eingebaut hast. |
Autor: | Artemis1988 [ Mo 03 Okt, 2005 21:51 ] |
Betreff des Beitrags: | |
Einfach im Dorf eingegeben /me kam mit seiner {weapon} und metzelte alles nieder |
Autor: | Eliwood [ Mo 03 Okt, 2005 22:02 ] |
Betreff des Beitrags: | |
Artemis1988 hat geschrieben: Einfach im Dorf eingegeben
/me kam mit seiner {weapon} und metzelte alles nieder Eben, genau, habs mir doch fast gedacht. Das funktioniert NUR, in dem du folgendes in der Script einbaust: [php]output_replace("Du kommst an ein Haus und nimmst deine {weapon}, um die Tür aufzubrechen. Doch die {weapondmg}Stärkepunkte deiner {weapon} reichen nicht, und du scheiterst kläglich!"); [/php] |
Autor: | Montekar [ Sa 13 Jan, 2007 12:53 ] |
Betreff des Beitrags: | |
Wäre aber auch gut, wenn es für die User gehen würde, z.B. auch in Kombination mit deinen Landschaftsemotes: /XEin Baum kippt um und fällt auf %name%. Für Leute ohne Farbcodes im namen geht es ja noch, aber wenn fast jeder Buchstabe ne andere Farbe hat... ![]() |
Autor: | Nightborn [ Sa 13 Jan, 2007 14:17 ] |
Betreff des Beitrags: | |
Eliwood hat geschrieben: Artemis1988 hat geschrieben: [php]output_replace("Du kommst an ein Haus und nimmst deine {weapon}, um die Tür aufzubrechen. Doch die {weapondmg}Stärkepunkte deiner {weapon} reichen nicht, und du scheiterst kläglich!"); [/php] was ist an [php]output("Du kommst an ein haus und nimmst deine %s um die Tür aufzubrechen",$session['user']['weapon']);[/php] verkehrt? das wäre jetzt in 1.x.x wie ichs mache. Man kann ja alles in %s reinknallen. |
Autor: | Kevz [ Sa 13 Jan, 2007 14:21 ] |
Betreff des Beitrags: | |
Nya, bei Eli's Version brauch man nur Klammern mit Inhalt nutzen. Wohin du gegen bei der 1.x.x, unnötig die ganze Zeile verlängern musst. ![]() Du nutzt also zwei Zutaten und Eli dagegen nur eine, dies ist auch wesentlich einfacher. Aber ich nutze in meiner Versoin (0.9.7), auch die Methode von 1.x.x. Zwar auf einem anderen Code Aufbau, aber ansonsten die gleiche Technik. |
Autor: | Nightborn [ Sa 13 Jan, 2007 15:29 ] |
Betreff des Beitrags: | |
und eli hat einige funktionsaufrufe mehr, auch wenn der code kleiner ist. Ich find es ist zuviel Performance für ein klein wenig schreibarbeit geopfert. Naja, ok ^^ ich wollte hauptsächlich wissen, ob output("..",$var,$var1) etc geht. |
Autor: | Kevz [ Sa 13 Jan, 2007 19:17 ] |
Betreff des Beitrags: | |
Joa klar gehts, doch wenn du soviele Variablen setzt die nicht genutzt werden. Dürfte es glaubig einen Fehler geben, dies glaube ich auch bei zuvielen %s. |
Autor: | Nightborn [ So 14 Jan, 2007 01:21 ] |
Betreff des Beitrags: | |
Kevz hat geschrieben: Joa klar gehts, doch wenn du soviele Variablen setzt die nicht genutzt werden. Dürfte es glaubig einen Fehler geben, dies glaube ich auch bei zuvielen %s.
? welche? die $session benötige ich... ja... sonst keine neuen variablen. und fehler... naja, also... da läuft halt intern dann ein sprintf drüber... also da kannst Du sicher ein paar %s drin lassen, bis es Probleme gibt... |
Autor: | Kevz [ So 14 Jan, 2007 02:28 ] |
Betreff des Beitrags: | |
Nein, ich bezogs darauf. Wenn man das ganze mit weiteren Erweitern sollte. ![]() |
Autor: | Nightborn [ So 14 Jan, 2007 10:27 ] |
Betreff des Beitrags: | |
So in etwa hab ichs verstanden, aber auch ein $this->bbcode_second_pass_code('', 'output("Bla %s, Blubb %s, Hoho %s", $session['user']['acctid'],$session['user']['login'],$session['user']['name']); ') Halte ich für unproblematisch. 1 Funktionsaufruf (den Du eh gemacht hättest) und 3 array Zugriffe. Innerhalb der output Funktion eine sprintf mehr ausgeführt. |
Seite 1 von 2 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |