anpera.net
https://anpera.dyndns.org/phpbb3/

Geschenkeladen editor
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=4548
Seite 1 von 1

Autor:  Laylia [ Mo 26 Mai, 2008 21:50 ]
Betreff des Beitrags:  Geschenkeladen editor

Ich möchte drauf hinweisen das man hier deutsch sprechen sollte,
also so, dass es auch ein Anfänger wie ich versteht.

Es geht mir darum wie ich Geschenke hinzufügen kann oder ob es sogar
einen editor gibt.

Autor:  Atrocis [ Mo 26 Mai, 2008 22:01 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

PHP:
addnav("Tulpe","newgiftshop.php?op=send&op2=gift1");
if ($session[user][gold] > 10) addnav("Rose - 10 Gold","newgiftshop.php?op=send&op2=gift2");
if ($session[user][gold] > 20) addnav("Strauß Rosen - 20 Gold","newgiftshop.php?op=send&op2=gift3");
if ($session[user][gold] > 40) addnav("Pralinen - 40 Gold","newgiftshop.php?op=send&op2=gift4");
if ($session[user][gold] > 60) addnav("Freundschaftsbändchen - 60 Gold","newgiftshop.php?op=send&op2=gift5");
if ($session[user][gold] > 100) addnav("Freundschaftsanhänger - 100 Gold","newgiftshop.php?op=send&op2=gift6");
if ($session[user][gold] > 200) addnav("Halskette - 200 Gold","newgiftshop.php?op=send&op2=gift7");
if ($session[user][gold] > 500) addnav("Plüschdrachen - 500 Gold","newgiftshop.php?op=send&op2=gift8");
if ($session[user][gold] > 1000) addnav("Beutel Heilkräuter - 1000 Gold","newgiftshop.php?op=send&op2=gift9");
if ($session[user][gold] > 1500) addnav("Drachenei - 1500 Gold","newgiftshop.php?op=send&op2=gift10");
if ($session[user][gold] > 2000) addnav("Goldenes Amulett - 2000 Gold","newgiftshop.php?op=send&op2=gift11");
if ($session[user][gold] > 3000) addnav("Seltsamer Schädel - 3000 Gold","newgiftshop.php?op=send&op2=gift12");
output("`n<ul><a href=\"newgiftshop.php?op=send&op2=gift1\">Tulpe</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift1");
if ($session[user][gold] > 10){
output("<a href=\"newgiftshop.php?op=send&op2=gift2\">Rose - 10 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift2");
}
if ($session[user][gold] > 20){
output("<a href=\"newgiftshop.php?op=send&op2=gift3\">Strauß Rosen - 20 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift3");
}
if ($session[user][gold] > 40){
output("<a href=\"newgiftshop.php?op=send&op2=gift4\">Pralinen - 40 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift4");
}
if ($session[user][gold] > 60){
output("<a href=\"newgiftshop.php?op=send&op2=gift5\">Freundschaftsbändchen - 60 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift5");
}
if ($session[user][gold] > 100){
output("<a href=\"newgiftshop.php?op=send&op2=gift6\">Freundschaftsanhänger - 100 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift6");
}
if ($session[user][gold] > 200){
output("<a href=\"newgiftshop.php?op=send&op2=gift7\">Halskette - 200 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift7");
}
if ($session[user][gold] > 500){
output("<a href=\"newgiftshop.php?op=send&op2=gift8\">Plüschdrachen - 500 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift8");
}
if ($session[user][gold] > 1000){
output("<a href=\"newgiftshop.php?op=send&op2=gift9\">Beutel Heilkräuter - 1000 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift9");
}
if ($session[user][gold] > 1500){
output("<a href=\"newgiftshop.php?op=send&op2=gift10\">Drachenei - 1500 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift10");
}
if ($session[user][gold] > 2000){
output("<a href=\"newgiftshop.php?op=send&op2=gift11\">Goldenes Amulett - 2000 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift11");
}
if ($session[user][gold] > 3000){
output("<a href=\"newgiftshop.php?op=send&op2=gift12\">Seltsamer Schädel - 3000 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift12");
}


So sieht das ganze in der newgiftshop.php aus. Wenn du nun etwas hinzufügen willst, dann brauchst du den Preis, setzt deinen Nav an die richtige Stelle (wenn die Abfrage wegen dem Gold schon vorhanden ist, {} nicht vergessen) und einen Text wie bei den anderen an die richtige Stelle setzen.

Weiter unten kommen dann die Abfragen bezüglich der op2. Da du deinem Geschenk wahrscheinlich den "Namen" gift13 gibts, musst du noch zusätzlich im Stil der vorhergehenden Abfragen eine neue hinzufügen.

Beispiel wäre jetz eine... goldene Rose (Handarbeit) für 3000 Gold. Dann änderst du den oberen Navteil so um:
PHP:
if ($session[user][gold] > 3000){
addnav("Seltsamer Schädel - 3000 Gold","newgiftshop.php?op=send&op2=gift12");
addnav("Goldene Rose (Handarbeit) - 3000 Gold","newgiftshop.php?op=send&op2=gift13");}


Dann fügst du nach
PHP:
output("<a href=\"newgiftshop.php?op=send&op2=gift12\">Seltsamer Schädel - 3000 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift12");

noch
PHP:
output("<a href=\"newgiftshop.php?op=send&op2=gift13\">Goldene Rose (Handarbeit) - 3000 Gold</a><br>",true);
addnav("","newgiftshop.php?op=send&op2=gift13");


Zu guter letzt fügst du hinter
PHP:
if ($HTTP_GET_VARS[op2]=="gift12"){
$gift="Seltsamer Schädel";
$gefallen=e_rand(5,10);
$effekt="Du untersuchst dieses merkwürdige Geschenk genauer. Dabei rutscht es dir aus der Hand und zerplatzt am Boden in 1000 Stücke. Doch eine seltsame Kraft wird frei, die dir $gefallen Gefallen bei Ramius bringt!";
db_query("UPDATE accounts SET deathpower=deathpower+$gefallen WHERE acctid=$name");
$session[user][gold]-=3000;
}

noch
PHP:
if ($HTTP_GET_VARS[op2]=="gift13"){
$gift="Goldene Rose (Handarbeit)";
$session[user][gold]-=1500;
}

an. Und schon sollte das neue Geschenk im Laden sein.

Autor:  Morpheus [ Di 27 Mai, 2008 12:09 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

Anmerken sollte man dabei noch, daß die Rose, wenn Du sie unten noch beifügst, wie es Atrocis beschrieben hat,

$this->bbcode_second_pass_code('', '
if ($HTTP_GET_VARS[op2]=="gift13"){
$gift="Goldene Rose (Handarbeit)";
$session[user][gold]-=1500;
}
')

einfach nur ein Geschenk ist, also nicht im Haus eingelagert werden kann und nach dem Schenken schon wieder weg ist. Willst Du dagegen ein Geschenk schaffen, daß im haus auch eingelagert werden kann, mußt Du es unten so anfügen:

$this->bbcode_second_pass_code('', '
if ($HTTP_GET_VARS[op2]=="gift13"){
$gift="Goldene Rose (Handarbeit)";
db_query("INSERT INTO items (name,owner,class,gold,description) VALUES ('`^Goldene Rose',$name,'Geschenk',15'`2Eine handgearbeitete, `^goldene Rose`2. Ein Geschenk von ".$session[user][name].".')");
$session[user][gold]-=1500;
')
Statt 15 (gibt den Wert in Gold beim Verkauf an) kannst Du auch 1, 1000 oder jeden beliebigen Wert nehmen, bedenke aber, daß es nicht zuviel Gold geben sollte, sonst hast Du Dir einen BUG geschaffen, wie Spieler, nach dem DK, wieder schnell zu Gold komen können.
Den Text hinten kannst Du auch nach belieben ändern, er ist das, was im Haus dann angezeigt wird hinter dem Gegenstand, sprich, wenn Du das einfügst, was ich oben geschrieben habe, siehst Du im Haus dann folgendes:

Goldene Rose Eine handgearbeitete, goldene Rose. Ein Geschenk von XY (XY=Name des Schenkers)

So kannst Du dann so viele, neue Geschenke, die man im Haus einlagern kann, machen, wie Du willst... :wink:

Autor:  Eichi [ Di 27 Mai, 2008 13:17 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

Bitte, wenn schon immerwieder die Rede von PHP5 ist, dann korregiert das gleich mit..

Anstelle von $HTTP_GET_VARS das benutzen -> $_GET

Garnicht erst anfangen wieder son "Mist" einzubauen.. gewöhnt es euch lieber gleich an ;)

LG, Eichi

EDIT
Und die Arrayschlüssel.. und die SQL dürfte nicht gehen, Strings müssen in ' gesetzt sein.. Außerdem ein Komma vergessen...

$this->bbcode_second_pass_code('', ' if ($_GET['op2']=="gift13"){
$gift="Goldene Rose (Handarbeit)";
db_query("
INSERT INTO items (
name,owner,class,gold,description
) VALUES (
'`^Goldene Rose','{$name}','Geschenk',15,'`2Eine handgearbeitete, `^goldene Rose`2. Ein Geschenk von {$session['user']['name']}'
)
");
$session[user][gold]-=1500;
}')

Viel hübscher :P

Autor:  Atrocis [ Di 27 Mai, 2008 15:11 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

Eichi hat geschrieben:
Anstelle von $HTTP_GET_VARS das benutzen -> $_GET
Garnicht erst anfangen wieder son "Mist" einzubauen.. gewöhnt es euch lieber gleich an ;)

Memo an mich selbst, ab 23 Uhr die c&p-Texte erst noch einmal checken xD

Autor:  Harthas [ Di 27 Mai, 2008 15:30 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

Eichi: Wenn man schon auf solche Kleinigkeiten hindeutet, dann sollte man auch alles ändern.
$session['user']['gold'] -= 1500;

Im übrigen kann man sowohl '{$name}' als auch einfach $name schreiben, wobei mir zweiteres besser gefällt, da man schlichtwegs weniger schreiben muss. Aber wieso verwendest du hier die {} anstelle von '..'? Wird von kaum Jemandem gebraucht, und führt daher eher zu Verwirrung.


Eine Frage hab ich dann allerdings doch. Was ist der genaue Unterschied zwischen ' {$name} ' und ' '.$name.' '? Und irre ich mich, wenn ich meine, dass man {} eher für integere Werte verwenden sollte denn für Strings?


Mit freundlichen Grüssen,
Harthas

Autor:  Eichi [ Di 27 Mai, 2008 15:48 ]
Betreff des Beitrags:  Re: Geschenkeladen editor

$session['user']['gold'] -= 1500;

Hab ich übersehen ^^°

Zitat:
Eine Frage hab ich dann allerdings doch. Was ist der genaue Unterschied zwischen ' {$name} ' und ' '.$name.' '? Und irre ich mich, wenn ich meine, dass man {} eher für integere Werte verwenden sollte denn für Strings?


'. <- Der . ist lediglich ein verkettungsoperator, kann Fehler verursachen wenn man ' anstelle von " in einem String benutzt, da PHP Variablen in Strings mit " interpretiert, mit ' hingegen nicht, es sei denn du benutzt {}, was PHP nebenbei bemerkt schneller interpretiert da es genau weiß was mit dem String angestellt werden soll, bei deiner Lösung "sucht" PHP also erstmal nach einer Lösung, wobei deine Lösung nicht falsch ist.

Vieles ist auch ne Frage des Geschmacks, das war aber auch nicht mein Ziel, mir ging es hauptsächlich um die Fehler, Komma fehlt etc.

LG, Eichi

EDIT
Da $name im obigen Beispiel ein String ist und kein Boolean-Wert/INTEGER müsste es in der SQL mit ' eingetragen werden, da PHP mit ' aber keine Variablen mehr interpretiert würde die SQL nichtmehr funktionieren.
Weitere Lösung wäre mit escapen, wieder die Geschmacksfrage..
Auszug aus der SQL:
,\"$name\",
oder eben
,'{$name}',

Falsch:
,$name,
es sei denn es ist ein INTEGER-Wert oder NULL, false, true
;)
Hab ich was vergessen? :pein:

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/