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

Problem mit Special
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=2668
Seite 1 von 1

Autor:  XCircle [ Do 06 Jul, 2006 15:19 ]
Betreff des Beitrags:  Problem mit Special

Hi ich bin Newbie hier und als Coder für LoGD!

Ich bin dabei ein Special zu schreiben habe aber dauernd Probleme mit case^^

Hier ist Line 46:
[php]$holen = e_rand(1,4);
if($_GET[op]=='holen')

{ case '1':
output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");
$exp = round ( $session[user][experience]*0.10 );
$session[user][experience]+= $exp;
break;[/php]

Und mein Browser sagt dann folgendes:
$this->bbcode_second_pass_code('', 'Parse error: parse error, unexpected T_CASE in /var/www/web12/html/logd/special/taschenangler.php on line 46')

Kan mir jemand helfen??

Autor:  Kevz [ Do 06 Jul, 2006 16:06 ]
Betreff des Beitrags: 

Das ganze Script bitte einmal Posten, danke.

Autor:  EiserneGarde [ Do 06 Jul, 2006 16:14 ]
Betreff des Beitrags: 

Also da ich da zu gehöre hier mal das script:

[php]<?php

###########################################
# Taschenangler v0.1 #
# #
# --------------------------------------- #
# #
# Geschrieben von XCircle #
# (mit kreativen Ideen von EiserneGarde) #
# Deutsche Version #
# #
# letztes Update: 05-07-2006 #
###########################################



#----- Man sieht eine schwarze Gestalt -----#
$session[user][specialinc]='taschenangler.php';
switch($HTTP_GET_VARS[op]){
case "search":
case "":
output("`n`2Du siehst eine schwarze Gestalt neben den Fluss stehen. Wirst du hingehen?");
addnav("Gehe näher zur Gestalt","forest.php?op=naehern");
addnav("Wegrennen","forest.php?op=verlassen");
break;
}
break;



#----- Man nähert sich der schwarzen Gestalt -----#
if($_GET[op]=='naehern')

{output("`2Du entschließt dich der Gestalt zu nähern...`nDu siehst das diese Gestalt ein alter Mann ist und er fragt dich ob du seine Tasche aus den Fluss holen möchtest.");
addnav("Ja, ich hole die Tasche!","forest.php?op=holen");
addnav("Nein, hol sie dir doch selber!","forest.php?op=verlassen2");
break;
}
break;




#----- Man will die Tasche aus den Fluss holen! -----#
$holen = e_rand(1,4);
if($_GET[op]=='holen')

{
case 1: // Man bekommt Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
$session[user][experience]+= $exp;
output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");
break;

case 2: // Man bekommt Edelsteine
output("Du nimmst einen Stock und holst die Tasche aus den Fluss.`nDann siehst du wie der alte Mann auf einmal wegrennt.`nDann schaust du in der Tasche nach was da wohl drin ist.`n`@Du findest $gems Edelsteine`0");
$session[user][gems] += $gems;
break;

case 3: // Man ertrinkt
output("Beim Versuch die Tasche aus dem Wasser zu holen fällst du in den Fluss hinein und `@ertrinkst`0");
addnav("Tägliche News","news.php");
addnews("`%".$session[user][name]."`t ist beim Versuch eine Tasche aus den Fluss zu angeln ertrunken!");
$session['user']['alive']=false;
$session['user']['hitpoints']=0;
break;

case 4: // Der Mann badankt sich und schenkt dir etwas
output("Du holst die Tasche mit einen Stock aus den Fluss. Der alte Mann bedankt sich und schenkt dir etwas.
`0");
output("`n`n^Du bekommst $menge Gold");
addnews("`%".$session[user][name]."`t hat den alten Mann geholfen die Tasche aus den Fluss zu holen!");
$menge = e_rand($session[user][level]*10,$session[user][level]*50);
$session['user']['gold']+=$menge;
break;
}




#----- Man nähert sich der schwarzen Gestalt nicht -----#
$verlassen = e_rand(1,4);
if($_GET[op]=='verlassen')

{case 1: //Man stolpert und verliert Lebenspunkte
output("Du bist gestolpert hast dich dabei verletzt, dabei hast du `@Lebenspunkte verloren!`0");
$rest = round ( $session['user']['hitpoints']*0.15 );
if ( $rest == 0 ) $rest = 1;
$session['user']['hitpoints'] = $rest;
break;

case 2: // Man findet eine Abkürzung und bekommt einen Waldkampf
output("Beim zurückgehen findest du eine Abkürzung und gewinnst so Zeit,`n`2du bekommst einen Waldkampf zusätlich!`0");
$session[user][turns]+=1;
break;

case 3: // Man kommt problemlos zurück
output("Du bist Problemlos zurückgekehrt!`0");
$session[user][specialinc]="";
break;

case 4: // Man kommt sicher zurück und erhält Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
output("Du bist sicher in den Wald gekommen!`n
`2Da du so sicher warst erhälst du $exp Erfahrungspunkte.`0");
$session[user][experience]+= $exp;
break;
}




#----- Man will die Tasche nicht holen -----#
$verlassen2 = e_rand(1,2);
if($_GET[op]=='verlassen2')

{ case 1: // Der alte Mann ist sauer und sticht dir einen Dolch in die Brust
output("Der alte Mann wird sauer sticht dir einen Dolch in die Brust, wobei du fast gestorben wärst.`0");
addnews("`%".$session[user][name]."`t wäre fast an eine Messerattacke gestorben!");
$session['user']['hitpoints']=1;
break;

case 2: // Du rennst weg
output("Du sagst den alten Mann, dass du die Tasche nicht holen möchtest und rennst zurück in den Wald!");
addnews("`%".$session[user][name]."`t hat den alten Mann nicht geholfen!");
$session[user][specialinc]="";
break;
}
?>[/php]
Leider wird alles zusammen ausgeführt!


gruß

Autor:  Montekar [ Do 06 Jul, 2006 16:26 ]
Betreff des Beitrags: 

Na, wenn du keine Zufallsabfrage drin hast kanns ja nicht gehen ;)
Hier schau dir das mal an:

[php]
#----- Man will die Tasche aus den Fluss holen! -----#
$holen = e_rand(1,4);
if($_GET[op]=='holen')

{
case 1: // Man bekommt Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
$session[user][experience]+= $exp;
output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");
break;

case 2: // Man bekommt Edelsteine
output("Du nimmst einen Stock und holst die Tasche aus den Fluss.`nDann siehst du wie der alte Mann auf einmal wegrennt.`nDann schaust du in der Tasche nach was da wohl drin ist.`n`@Du findest $gems Edelsteine`0");
$session[user][gems] += $gems;
break;

case 3: // Man ertrinkt
output("Beim Versuch die Tasche aus dem Wasser zu holen fällst du in den Fluss hinein und `@ertrinkst`0");
addnav("Tägliche News","news.php");
addnews("`%".$session[user][name]."`t ist beim Versuch eine Tasche aus den Fluss zu angeln ertrunken!");
$session['user']['alive']=false;
$session['user']['hitpoints']=0;
break;

case 4: // Der Mann badankt sich und schenkt dir etwas
output("Du holst die Tasche mit einen Stock aus den Fluss. Der alte Mann bedankt sich und schenkt dir etwas.
`0");
output("`n`n^Du bekommst $menge Gold");
addnews("`%".$session[user][name]."`t hat den alten Mann geholfen die Tasche aus den Fluss zu holen!");
$menge = e_rand($session[user][level]*10,$session[user][level]*50);
$session['user']['gold']+=$menge;
break;
}
[/php]

Das müsste so aussehen:

[php]
#----- Man will die Tasche aus den Fluss holen! -----#
$holen = e_rand(1,4);
if($_GET[op]=='holen')

{
switch($holen) {
case 1: // Man bekommt Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
$session[user][experience]+= $exp;
output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");
break;

case 2: // Man bekommt Edelsteine
output("Du nimmst einen Stock und holst die Tasche aus den Fluss.`nDann siehst du wie der alte Mann auf einmal wegrennt.`nDann schaust du in der Tasche nach was da wohl drin ist.`n`@Du findest $gems Edelsteine`0");
$session[user][gems] += $gems;
break;

case 3: // Man ertrinkt
output("Beim Versuch die Tasche aus dem Wasser zu holen fällst du in den Fluss hinein und `@ertrinkst`0");
addnav("Tägliche News","news.php");
addnews("`%".$session[user][name]."`t ist beim Versuch eine Tasche aus den Fluss zu angeln ertrunken!");
$session['user']['alive']=false;
$session['user']['hitpoints']=0;
break;

case 4: // Der Mann badankt sich und schenkt dir etwas
output("Du holst die Tasche mit einen Stock aus den Fluss. Der alte Mann bedankt sich und schenkt dir etwas.
`0");
output("`n`n^Du bekommst $menge Gold");
addnews("`%".$session[user][name]."`t hat den alten Mann geholfen die Tasche aus den Fluss zu holen!");
$menge = e_rand($session[user][level]*10,$session[user][level]*50);
$session['user']['gold']+=$menge;
break;
}
}
[/php]

Das weiteren würde ich dir empfehlen, mit einrückungen zu arbeiten, z.B. so

[php]switch(e_rand(1,100)) {

....case 1:
....break;

}[/php]

EDIT: Bei if/elseif/else brauchst du kein break; :D
Und den fehler von oben hattest du noch 2 oder 3 mal drin, so sieht die Korrekte Version aus:

[php]
<?php

###########################################
# Taschenangler v0.1 #
# #
# --------------------------------------- #
# #
# Geschrieben von XCircle #
# (mit kreativen Ideen von EiserneGarde) #
# Deutsche Version #
# #
# letztes Update: 05-07-2006 #
###########################################



#----- Man sieht eine schwarze Gestalt -----#
$session[user][specialinc]='taschenangler.php';
switch($HTTP_GET_VARS[op]){
case "search":
case "":
output("`n`2Du siehst eine schwarze Gestalt neben den Fluss stehen. Wirst du hingehen?");
addnav("Gehe näher zur Gestalt","forest.php?op=naehern");
addnav("Wegrennen","forest.php?op=verlassen");
break;
}




#----- Man nähert sich der schwarzen Gestalt -----#
if($_GET[op]=='naehern')

{output("`2Du entschließt dich der Gestalt zu nähern...`nDu siehst das diese Gestalt ein alter Mann ist und er fragt dich ob du seine Tasche aus den Fluss holen möchtest.");
addnav("Ja, ich hole die Tasche!","forest.php?op=holen");
addnav("Nein, hol sie dir doch selber!","forest.php?op=verlassen2");
}




#----- Man will die Tasche aus den Fluss holen! -----#
$holen = e_rand(1,4);
if($_GET[op]=='holen')

{
switch($holen) {
case 1: // Man bekommt Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
$session[user][experience]+= $exp;
output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");
break;

case 2: // Man bekommt Edelsteine
output("Du nimmst einen Stock und holst die Tasche aus den Fluss.`nDann siehst du wie der alte Mann auf einmal wegrennt.`nDann schaust du in der Tasche nach was da wohl drin ist.`n`@Du findest $gems Edelsteine`0");
$session[user][gems] += $gems;
break;

case 3: // Man ertrinkt
output("Beim Versuch die Tasche aus dem Wasser zu holen fällst du in den Fluss hinein und `@ertrinkst`0");
addnav("Tägliche News","news.php");
addnews("`%".$session[user][name]."`t ist beim Versuch eine Tasche aus den Fluss zu angeln ertrunken!");
$session['user']['alive']=false;
$session['user']['hitpoints']=0;
break;

case 4: // Der Mann badankt sich und schenkt dir etwas
output("Du holst die Tasche mit einen Stock aus den Fluss. Der alte Mann bedankt sich und schenkt dir etwas.
`0");
output("`n`n^Du bekommst $menge Gold");
addnews("`%".$session[user][name]."`t hat den alten Mann geholfen die Tasche aus den Fluss zu holen!");
$menge = e_rand($session[user][level]*10,$session[user][level]*50);
$session['user']['gold']+=$menge;
break;
}
}




#----- Man nähert sich der schwarzen Gestalt nicht -----#
$verlassen = e_rand(1,4);
if($_GET[op]=='verlassen')

{
switch($verlassen) {
case 1: //Man stolpert und verliert Lebenspunkte
output("Du bist gestolpert hast dich dabei verletzt, dabei hast du `@Lebenspunkte verloren!`0");
$rest = round ( $session['user']['hitpoints']*0.15 );
if ( $rest == 0 ) $rest = 1;
$session['user']['hitpoints'] = $rest;
break;

case 2: // Man findet eine Abkürzung und bekommt einen Waldkampf
output("Beim zurückgehen findest du eine Abkürzung und gewinnst so Zeit,`n`2du bekommst einen Waldkampf zusätlich!`0");
$session[user][turns]+=1;
break;

case 3: // Man kommt problemlos zurück
output("Du bist Problemlos zurückgekehrt!`0");
$session[user][specialinc]="";
break;

case 4: // Man kommt sicher zurück und erhält Erfahrungspunkte
$exp = round ( $session[user][experience]*0.10 );
output("Du bist sicher in den Wald gekommen!`n
`2Da du so sicher warst erhälst du $exp Erfahrungspunkte.`0");
$session[user][experience]+= $exp;
break;
}
}




#----- Man will die Tasche nicht holen -----#
$verlassen2 = e_rand(1,2);
if($_GET[op]=='verlassen2')

{
switch($verlassen2) {
case 1: // Der alte Mann ist sauer und sticht dir einen Dolch in die Brust
output("Der alte Mann wird sauer sticht dir einen Dolch in die Brust, wobei du fast gestorben wärst.`0");
addnews("`%".$session[user][name]."`t wäre fast an eine Messerattacke gestorben!");
$session['user']['hitpoints']=1;
break;

case 2: // Du rennst weg
output("Du sagst den alten Mann, dass du die Tasche nicht holen möchtest und rennst zurück in den Wald!");
addnews("`%".$session[user][name]."`t hat den alten Mann nicht geholfen!");
$session[user][specialinc]="";
break;
}
}
?>[/php]

Edit 2:

Du hast auch ein paar Variablennicht gesetzt, z.B. die Variable [php]$gems[/php], so bekommt man keine Edelsteine :D

Autor:  EiserneGarde [ Do 06 Jul, 2006 16:35 ]
Betreff des Beitrags: 

WoW,
danke für die schnelle antwort...
ich werde das mal testen!

Autor:  Montekar [ Do 06 Jul, 2006 16:40 ]
Betreff des Beitrags: 

Jepp, ich hoffe ich konnte dir helfen ;)

Autor:  Kevz [ Do 06 Jul, 2006 19:06 ]
Betreff des Beitrags: 

So, hier hab mir mal die mühe gemacht und ausgebessert...
Musst gucken ob funzt:

[php]<?php
###########################################
# Taschenangler v0.1 #
# #
# --------------------------------------- #
# #
# Geschrieben von XCircle #
# (mit kreativen Ideen von EiserneGarde) #
# Deutsche Version #
# #
# letztes Update: 05-07-2006 #
###########################################

switch($_GET['op']) {
case "search": case "":
output("`n`2Du siehst eine schwarze Gestalt neben den Fluss stehen. Wirst du hingehen?");
addnav("Gehe näher zur Gestalt","forest.php?op=naehern");
addnav("Wegrennen","forest.php?op=verlassen");

$session['user']['specialinc'] = "taschenangler.php";
break;
case "naehern":
output("`2Du entschließt dich der Gestalt zu nähern...`nDu siehst das diese Gestalt ein alter Mann ist und er fragt dich ob du seine Tasche aus den Fluss holen möchtest.");
addnav("Ja, ich hole die Tasche!","forest.php?op=holen");
addnav("Nein, hol sie dir doch selber!","forest.php?op=verlassen2");
break;
case "holen":
$random = e_rand(1,4);
switch($random) {
case 1:
$exp = round($session['user']['experience']*0.10);

output("Du hast die Tasche aus den Fluss gefischt und der alte Mann rennt einfach damit weg! Entäuscht verlässt du den Wald.`nDu schwörst dir das du das nie mehr machen wirst.`n`2Du bekommst $exp Erfahrungspunkte.`n`0");

$session['user']['experience'] += $exp;
break;
case 2:
output("Du nimmst einen Stock und holst die Tasche aus den Fluss.`nDann siehst du wie der alte Mann auf einmal wegrennt.`nDann schaust du in der Tasche nach was da wohl drin ist.`n`@Du findest $gems Edelsteine`0");

$gems = e_rand(1,3);
$session['user']['gems'] += $gems;
break;
case 3:
output("Beim Versuch die Tasche aus dem Wasser zu holen fällst du in den Fluss hinein und `@ertrinkst`0");
addnav("Tägliche News","news.php");
addnews("`%".$session['user']['name']."`t ist beim Versuch eine Tasche aus den Fluss zu angeln ertrunken!");

$session['user']['alive'] = 0;
$session['user']['hitpoints'] = 0;
break;
case 4:
output("Du holst die Tasche mit einen Stock aus den Fluss. Der alte Mann bedankt sich und schenkt dir etwas. `0");
output("`n`n^Du bekommst $menge Gold");
addnews("`%".$session['user']['name']."`t hat den alten Mann geholfen die Tasche aus den Fluss zu holen!");

$session['user']['gold'] += e_rand($session['user']['level']*10,$session['user']['level']*50);
break;
}
addnav("Zurück in den Wald","forest.php");
$session['user']['specialinc'] = "";
break;
case "verlassen":
$verlassen = e_rand(1,4);
switch($verlassen) {
case 1:
output("Du bist gestolpert hast dich dabei verletzt, dabei hast du `@Lebenspunkte verloren!`0");

$hp = round($session['user']['hitpoints']*0.15);
$session['user']['hitpoints'] = ($hp) > 0 ? $hp:1;
break;
case 2:
output("Beim zurückgehen findest du eine Abkürzung und gewinnst so Zeit,`n`2du bekommst einen Waldkampf zusätlich!`0");

$session['user']['turns']+=1;
break;
case 3:
output("Du bist Problemlos zurückgekehrt!`0");
break;
case 4:
$exp = round($session['user']['experience']*0.10);
output("Du bist sicher in den Wald gekommen!`n `2Da du so sicher warst erhälst du $exp Erfahrungspunkte.`0");

$session['user']['experience'] += $exp;
break;
}
addnav("Zurück in den Wald","forest.php");
$session['user']['specialinc'] = "";
break;
case "verlassen2":
$verlassen2 = e_rand(1,2);
switch($verlassen2) {
case 1:
output("Der alte Mann wird sauer sticht dir einen Dolch in die Brust, wobei du fast gestorben wärst.`0");
addnews("`%".$session['user']['name']."`t wäre fast an eine Messerattacke gestorben!");

$session['user']['hitpoints'] = 1;
break;
case 2:
output("Du sagst den alten Mann, dass du die Tasche nicht holen möchtest und rennst zurück in den Wald!");
addnews("`%".$session['user']['name']."`t hat den alten Mann nicht geholfen!");
break;
}
addnav("Zurück in den Wald","forest.php");
$session['user']['specialinc'] = "";
break;
}
?>[/php]

Autor:  XCircle [ Do 06 Jul, 2006 20:18 ]
Betreff des Beitrags:  Re: Problem

Danke für die schnelle hilfe!
Habe den Script mal getestet. Läuft wunder bar bis wo man
antworten kann, ob man die Tasche holt oder nicht.
Danach kommt badnav :(

Autor:  XCircle [ Do 06 Jul, 2006 20:18 ]
Betreff des Beitrags:  Re: Problem

Danke für die schnelle Hilfe!
Habe den Script mal getestet. Läuft wunder bar bis wo man
antworten kann, ob man die Tasche holt oder nicht.
Danach kommt badnav :(

Autor:  Kevz [ Do 06 Jul, 2006 20:56 ]
Betreff des Beitrags: 

Suche:
[php]
<?php
addnav("Nein, hol sie dir doch selber!","forest.php?op=verlassen2");
break;
?>[/php]
Füge davor:
[php]<?php
$session['user']['specialinc'] = "taschenangler.php";
?>[/php]

Autor:  XCircle [ Do 06 Jul, 2006 21:34 ]
Betreff des Beitrags: 

danke für deine superschnelle antwort

ich teste direkt den script!!

Autor:  Kevz [ Do 06 Jul, 2006 21:38 ]
Betreff des Beitrags: 

Btw. solltest dich mal mit der Php Manual beschäftigen ;)

Autor:  XCircle [ Fr 07 Jul, 2006 10:59 ]
Betreff des Beitrags: 

ich lerne noch php bin sozusagen mitten drin^^
aber thx des funzt jez alles (dank dir)^^

bis vllt zum nächsten mal :D

Autor:  Eliwood [ Fr 07 Jul, 2006 15:36 ]
Betreff des Beitrags: 

Zitat:
EDIT: Bei if/elseif/else brauchst du kein break; :D


Naja. Ich kann dir Fälle zeigen, bei denen ein break in einer if, elseif, else unbedingt notwendig ist ;)

Autor:  Montekar [ Fr 07 Jul, 2006 17:59 ]
Betreff des Beitrags: 

Das musst du unbedingt mal machen, das wusst ich noch garnicht :)

Autor:  Eliwood [ Fr 07 Jul, 2006 18:11 ]
Betreff des Beitrags: 

Montekar hat geschrieben:
Das musst du unbedingt mal machen, das wusst ich noch garnicht :)


[php]$i = 0;
while(true) {
echo "Blub";
do_this();
if(is_user_never_listering()) {
break;
}
$i++;
}[/php]

Und dann wird die while gebrochen... ;)

Autor:  XCircle [ Sa 08 Jul, 2006 15:59 ]
Betreff des Beitrags: 

lol :D

naja ich denk ma dieser Thread kann geshclossen werden^^

Autor:  Montekar [ Sa 08 Jul, 2006 18:19 ]
Betreff des Beitrags: 

XCircle hat geschrieben:
lol :D

naja ich denk ma dieser Thread kann geshclossen werden^^


Das glaub ich nicht, erst muss ich noch was sagen :D

Eliwood hat geschrieben:

Montekar hat geschrieben:
Das musst du unbedingt mal machen, das wusst ich noch garnicht :)



[php]
$i = 0;
while(true) {
echo "Blub";
do_this();
if(is_user_never_listering()) {
break;
}
$i++;
}
[/php]


Und dann wird die while gebrochen... ;)


Das ist ja interessant... thx Eliwood :)

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