anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 18 Apr, 2024 18:18

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Programmierer Tools
BeitragVerfasst: Mi 29 Jun, 2005 12:29 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 29 Jun, 2005 13:09 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 20 Sep, 2004 23:43
Beiträge: 164
Wohnort: Berlin
LoGD: http://www.atrahor.de/source.php
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.

_________________
Atrahor.de
http://www.atrahor.de/ci_images.php?id=1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 29 Jun, 2005 13:17 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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 :D
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 :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 02 Okt, 2005 21:18 
Offline
Profi
Profi
Benutzeravatar

Registriert: Do 17 Feb, 2005 18:34
Beiträge: 192
Wohnort: Saarland
Geschlecht: Männlich
LoGD: http://www.die-legende-des-drachen.de/
Skype: foren.tom88
^^
Also bei mir geht das irgendwie nicht!
Hab ich was falsch gemacht?

Habs im common.php direkt hinter function output gescript!

grüße
Artemis

_________________
you can loose your money, you can loose your life, but you never forget your real friends!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 02 Okt, 2005 22:11 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 02 Okt, 2005 23:41 
Offline
Profi
Profi
Benutzeravatar

Registriert: Do 17 Feb, 2005 18:34
Beiträge: 192
Wohnort: Saarland
Geschlecht: Männlich
LoGD: http://www.die-legende-des-drachen.de/
Skype: foren.tom88
habs in die common.php geschrieben
dann ingame irgendwo halt den satz von dir getestet ^^
Grüße
Artemis

_________________
you can loose your money, you can loose your life, but you never forget your real friends!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 10:59 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 21:31 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 16 Jul, 2005 22:40
Beiträge: 693
Wohnort: /var/server/home/castle
Geschlecht: Männlich
LoGD: http://www.kokoto.de/
Skype: Apfelschokowodkakekskuchen
artemis kanns sein das dus gepostet ahst statt es in ein script einzusetzen????


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 21:39 
Offline
Profi
Profi
Benutzeravatar

Registriert: Do 17 Feb, 2005 18:34
Beiträge: 192
Wohnort: Saarland
Geschlecht: Männlich
LoGD: http://www.die-legende-des-drachen.de/
Skype: foren.tom88
[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

_________________
you can loose your money, you can loose your life, but you never forget your real friends!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 21:46 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Ich fragte, WIE du es getestet hast, nicht wie du es eingebaut hast.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 21:51 
Offline
Profi
Profi
Benutzeravatar

Registriert: Do 17 Feb, 2005 18:34
Beiträge: 192
Wohnort: Saarland
Geschlecht: Männlich
LoGD: http://www.die-legende-des-drachen.de/
Skype: foren.tom88
Einfach im Dorf eingegeben
/me kam mit seiner {weapon} und metzelte alles nieder

_________________
you can loose your money, you can loose your life, but you never forget your real friends!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Okt, 2005 22:02 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 13 Jan, 2007 12:53 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
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... :D

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 13 Jan, 2007 14:17 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 13 Jan, 2007 14:21 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 13 Jan, 2007 15:29 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 13 Jan, 2007 19:17 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 14 Jan, 2007 01:21 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 14 Jan, 2007 02:28 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Nein, ich bezogs darauf. Wenn man das ganze mit weiteren Erweitern sollte. ;) Hatte mich aber wohl nicht klar genug ausgedrückt gehabt =(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 14 Jan, 2007 10:27 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum