anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Sa 21 Sep, 2019 18:26

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Special Coding - Easy Create Howto
BeitragVerfasst: Mo 10 Jul, 2006 17:28 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Special Coding - Easy Create Howto


Beschreibung:
In diesem Tutorial zeige ich euch, wie man einfach und schnell ein Special/besonderes Ereignis erstellt. Dies setzt einige Grundkenntnisse vorraus was die Funktionen betrifft. Ansonsten sollte, recht Simpel und einfach sein.


Schwierigkeitsgrad:
Schwierigkeitsgrad des Tutorials Leicht.

Tutorial:
Als erstes, machen wir uns eine Vorlage mit unsere Copyright Informationen und Kontaktdaten. Dann sollten wir überlegen wie Komplex wir das ganze Ereignis machen wollten, weil es soll recht Komplex sein, aber nicht zu umständlich was den Code betrifft. Hier ein kleiner Anfang:

[php] /*
* Special: my first special
*
* Copyright (C) 2006 Vorname Nachname [Spitzname/Benutzername]
* Email: <example@example.com>
* Adresse: http://www.example.com/
*
* Beschreibung:
* Beschreibung des Specials
* btw. noch evtl. was man beachten
* sollte, bevor man es nutzt.
*/
$file = basename(__FILE__);
$nospecinc = array("leave"=>true);
[/php]

Dies ist nun unser kleiner Anfang, nun wollen wir aber das ganze mal etwas Komplexer gestalten, in dem wir unser Elemente in einem Array Speichern, wo unser Special noch eingebunden werden soll. Das sieht in etwa so aus:
[php]

/*
* special bind check
*/
if (!array_key_exists($_GET['op'],$nospecinc)) $nospecinc[$_GET['op']] = false;
if ($nospecinc[$_GET['op']]) $session['user']['specialinc'] = "";
else $session['user']['specialinc'] = $file;[/php]

Leider fehlt uns aber immer noch ein Titel für das Ereignis, sowie der Inhalt. Dies erstellen wir nun Dynamisch und sehr einfach. Siehe dazu hier:
[php]
/*
* special header
*/
page_header("Kopftitel");

/*
* special begin
*/
switch ($_GET['op']) {
case "leave":
output("Glückwunsch! Du hast dein besonderes Ereignis erfolgreich Verlassen!");

forest(true);
break;
case "continue":
output("Glückwunsch! Du hast es geschafft! ");
output("`n");
output("Nun weißt du wie man eine neue Option erstellen kann. ");
output("Dies lässt sich in xxx Verschiedenen möglichkeiten machen. ");
output("`n`n");
output("Wenn du das Special nun wider zurück möchtes, so drücke auf die Option \"Zurück zum Haupt Ereignis\".");

addnav("Zurück zum Haupt Ereignis","forest.php");
break;
default:
output("Willkommen bei meinem ersten Special!");

addnav("Option 1 Auswählen (weiter)","forest.php?op=continue");
addnav("Option 2 Auswählen (verlassen)","forest.php?op=leave");
}[/php]

Nun hätten wir also unser Special / besonderes Ereignis fast fertig, jetzt müssen wir aber auch das ganze noch zum Schluss beenden, damit keine Weiße Seite auftritt oder Sonstige Fehler. Siehe dazu hier:
[php] /*
* special footer
*/
page_footer();[/php]


Hinweis/Schlusswort:
Dieses Tutorial wurde extra so geschrieben, das es für jeden recht Simpel sein sollte. Das Script darf frei verändert sowie genutzt werden. Sollten noch Fragen bestehen, bitte im Thread Posten ggf. den Autor anschreiben/ansprechen. Das Fertige Script gibt es hier zum Download.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 02 Dez, 2006 22:27 
Offline
Profi
Profi
Benutzeravatar

Registriert: So 18 Jun, 2006 18:38
Beiträge: 179
Wohnort: Herne
LoGD: http://www.mystara-logd.net/source.php
dann möchte ich mal drauf hinweisen das server mit php versionen 4.4.4 beispielsweise die variante switch ($_GET['op']) {
nicht immer einwandfrei nutzen können! das ist mir zumindest aufgefallen als jemand eines meiner geschrieben ereignisse nicht einwandfrei zum laufen bekam obwohl es nur hochgeladen werden musste!

er durfte das dann alles wieder in die IF ($_GET['op']) { form bringen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Dez, 2006 14:02 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Öhm...leicht? Also ich würde das nun als höchst kompliziert ansehen O_O

Für ein Special reicht doch am Anfang

require_once "common.php";
if(!isset($session)) exit();

Or not?

Und die Darstellung über einen switch laufen zu lassen würde ich auch nicht gerade als einfach ansehen... Zumindest würde es mich verwirren...

Aber doch, es gefällt mir, vorallem weil die Kopfzeilen auch mir was gebracht haben nun.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Dez, 2006 14:20 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
[php]if(!isset($session)) exit(); [/php]

So etwas in der Art verwendet er hier allerdings gar nicht ;-).
Das sagt ja eigentlich nur, dass, falls die Variable $session leer ist, das ganze abgebrochen werden soll. Vielleicht meinst du, dass damit Weisse Seiten verhindert werden... Das stimmt nicht *g* (Im Gegenteil, bei mir konnte ich deren damit erzeugen *g*).
page_footer(); und page_hedaer("Blubb"); sind zwar nicht nowendig, aber man kann damit eventuell weisse Seiten unterdrücken.

Was Kevz da im "Header" (Wollen wir ihn einmal so nennen, gemeint ist der special bind check), gemacht hat, ist kurz zusammengefasst eine "Vereinfachung" des Specialincs. So muss er nicht extra weiter unten in Script gesetzt oder geleert werden.

In $file speichert er den Namen der Datei (Von PHP ermittelt).
In $nospecinc einen Array, welcher den Key leave mit dem Wert true beinhaltet.

[php] if (!array_key_exists($_GET['op'],$nospecinc)) $nospecinc[$_GET['op']] = false; [/php]

Das versteh ich auch nicht so ganz, aber vermutlich kontrolliert er hier, ob $_GET['op'] etwas aus dem Array $nospecinc enthält. Falls nicht, wird $nospecinc[$_GET['op']] auf false gesetzt.

[php] if ($nospecinc[$_GET['op']]) $session['user']['specialinc'] = ""; [/php]

Hier kontrolliert er, ob in $_GET['op'] ein leave enthalten ist (Ob das Ergebnis true ist). Falls ja, wird specialinc geleert, und man verlässt das Special.
Falls dies nicht der Fall sein sollte, wird specialinc einfach den Wert $file zugewiesen.
[php] else $session['user']['specialinc'] = $file; [/php]



Und noch etwas zu switch...
Mir persönlich gefällt switch besser. ^^
Mit if muss man meinem Geschmack nach zu viel schreiben. xD.
Aber es stimmt natürlich, mit if sieht man besser, wo man sich genau befindet (Zumindest, wenn switch nicht schön eingerückt ist *g*).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Dez, 2006 18:47 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Ja, ICH kapiere es schon, aber ich finde es nicht unbedingt sinnvoll, die Sache mit dem array.

Wenn man für den return zum Wald nur $_GET[op]=="leave" benutzt, dann ist es wohl sicherlich gut, aber das mache ich höchst seltenst. Ansonsten müsste man wohl alle Wege zurück in den Wald in das array eintragen, was dann ungefähr auf die selbe Arbeit hinausläuft, nur komplizierter ^^

€: Für was steht das da?
[php]forest(true);[/php]

Wenn man $session['user']['specialinc']=""; setzt, wird man doch automatisch zum Wald weitergeleitet?! Oo


Zuletzt geändert von Drazaar am Di 05 Dez, 2006 18:59, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Dez, 2006 18:55 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Ne, musst du nicht :-P

Solange du nur immer schön ?op=leave verwendest kommst du immer raus :-D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Dez, 2006 19:07 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Ja, aber angenommen wir haben folgendes: Einen Tempel: Man kann garnicht erst reingehen, oder drinnen dann wieder raus

Also so:
[php]
switch($_GET['op']){
case 'leave':
output("Du gehst garnicht erst rein");
break;
case 'leave2':
output("Du gehst nach einer Weile wieder raus");
break;
}
[/php]

Die Texte sind dann unterschiedlich. Soll heißen: Ich müsste nun auch op=leave2 eintragen in das Array. Und wenn nicht das, dann zumindest weitere Abfragen für den Text machen. Oder ein weiteres Array...bla~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Dez, 2006 19:48 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Das stimmt natürlich.... WENN man es so macht.

Muss man aber nicht. *g*

Es muss ja nicht unbedingt einen Text geben, der dort ausgegeben wird... Ich persönlich würde diesen einen "Klick" vorher setzen... ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Dez, 2006 20:26 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Naja. Ich finde es so schöner...einfach eine Sache des "Styles" ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum