anpera.net
http://anpera.homeip.net/phpbb3/

Kerker
http://anpera.homeip.net/phpbb3/viewtopic.php?f=43&t=2047
Seite 4 von 6

Autor:  Rene [ Mo 04 Jun, 2007 12:55 ]
Betreff des Beitrags: 

Danke dir :wink:

Autor:  december [ Sa 09 Jun, 2007 01:22 ]
Betreff des Beitrags: 

Ich hab diesen wunderbaren Kerker bei mir auch einmal eingebaut und über die Admin Grotte kann jetzt ein Kerkerinsasse für noch längere Zeit eingesprerrt bleiben, als nur für einen Tag.

Ich habe aber auch ein großes Problem. Wenn ich jemanden einkerkere und diese Person spaziert dann auf den Dorfplatz passiert gar nichts. Sie wird also nicht in den Kerker geschickt.
Klickt eine Person zu oft und landet in der badnav.php, kommt sie ohne Probleme aus dem Kerker raus und vom Dorfplatz aus nicht mehr in den Kerker zurück.

Noch mal ganz kurz:
Wer prision==1 hat, kann trotzdem ungestört weiter playen und machen was er will, obwohl er sich auf dem Dorfplatz befindet und eigentlich durch das redirect("kerker.php") wieder im Kerker landen sollte.

Das gleibe Problem habe ich auch mit der Einzelhaft.

EDIT:
Ich bin blöd, hab den Link zu meiner Scource vergessen, aber hier kommt er. ^^

Source:
http://www.saturuusu-logd.de/source.php

Kann mir da bitte jemand helfen?

Schon einmal ein Danke im Voraus...

December

Autor:  Harthas [ Sa 09 Jun, 2007 01:24 ]
Betreff des Beitrags: 

Ersetz doch mal == durch >=.

Autor:  december [ Sa 09 Jun, 2007 01:43 ]
Betreff des Beitrags: 

Nein, das klappt immer noch nicht.

Man kann sich nach dem kleinen Besuch im Badnav (den sich dann ja wohl jeder gönnen wird von den Eingekerkerten) wieder frei bewegen.

December

Autor:  Harthas [ Sa 09 Jun, 2007 01:46 ]
Betreff des Beitrags: 

[php]if($session['user']['prison'] >= 1) redirect('kerker.php');
elseif($session['user']['einzelhaft'] >= 1) redirect('kerker.php');
[/php]

Schon einmal etwas von mathematischen Vergleichsoperatoren gehört? :-P

>= ist einer, =. garantiert nicht. Gibts in PHP meines Wissens nach sowieso nicht (Das Ähnlichste wäre .=. Aber das ist kein Vergleichsoperator, sondern eine Zuweisung)

Autor:  december [ Sa 09 Jun, 2007 01:53 ]
Betreff des Beitrags: 

Es ist schön, dass du mir das alles erklärst, nur klappt das immer noch nicht.

Jeder kann wie es ihm beliebt, über den Badnav wieder in die Freiheit gelangen und dort weiterspielen.

December

Autor:  Harthas [ Sa 09 Jun, 2007 01:54 ]
Betreff des Beitrags: 

Hö... *blinzel*blinzel*

Kontrollier mal, welche Werte in die Accounts-Tabelle für den jeweilig eingekerkerten gespeichert werden.

EDIT: Hab den Fehler gefunden. War ein Klammerfehler in deiner village.php

Ersetze:
[php]if ($session['user']['alive']){ }else{
redirect("shades.php");

if($session[user][geistereiche]==1){
redirect("geistereiche.php");
}

//Kerker Beginn
if($session['user']['prison'] >= 1) redirect('kerker.php');
elseif($session['user']['einzelhaft'] >= 1) redirect('kerker.php');
//Kerker End
}[/php]
Durch folgendes:
[php]if (empty($session['user']['alive']) redirect('shades.php');

elseif(!empty($session['user']['geistereiche'])) redirect('geistereiche.php');

//Kerker Beginn
elseif(!empty($session['user']['prison'])) redirect('kerker.php');
elseif(!empty($session['user']['einzelhaft'])) redirect('kerker.php');
//Kerker End[/php]


EDIT2: Ach... Mir ist noch etwas aufgefallen:
[php]if ($session['user']['location'] = 102);[/php]
Das ist absolut unnütz. Entweder machst du eine Zuweisung, oder aber die if-Kontrolle. Nur in seltenen Fällen wird in der if-Klausel auch eine Zuweisung unternommen.
Nimm hier bitte folgendes:
[php]$session['user']['location'] = 102;[/php]

Autor:  december [ Sa 09 Jun, 2007 02:06 ]
Betreff des Beitrags: 

Ich bedanke mich schon mal für die nette Hilfe. Ein riesen Dankeschön, jetzt klappt alles wunderbar.

Aber eine kleine Frage habe ich noch, ist das korrekt, dass beim ersten "empty" kein "!" davorsteht?

Zu deinem EDIT:
Du hast mir vor einiger Zeit mal gesagt das wäre praktisch so, wenn ich einen Ort von zwei Städten aus erreichbar machen will.
Ich hab ja eine village.php und eine village1.php. Viele Orte wie z.B. Ruhmeshalle, etc. sind von beiden Städen aus erreichbar, deswegen diese Abfrage.

December

Autor:  Harthas [ Sa 09 Jun, 2007 02:08 ]
Betreff des Beitrags: 

Japp, das ist korrekt.

Mit empty kontrolliert man, ob eine Variable leer ist (Nicht existent ist, 0 oder false als Wert hat). Im ersten Fall tritt es also nur auf, wenn alive wirklich 0 ist (Der Spieler also Tod). In diesem Fall liefert empty true zurück.

Mit dem Ausrufezeichen (!) davor tritt die Nachfolgende Anweisung jedoch nur in Kraft, wenn die Variable eben NICHT leer ist. Wenn empty also false als Rückgabewert liefert.

Autor:  december [ Sa 09 Jun, 2007 02:13 ]
Betreff des Beitrags: 

Ok, da war ich gerade etwas verwirrt, ich hab noch nie mit "emtpy" gearbeitet.
Aber hey, ich hab heute wieder was dazugelernt und bedanke mich noch mal ganz herzlich wegen der super schnellen Hilfe hier und auch bei den Berufen.

December

Autor:  Eliwood [ Sa 09 Jun, 2007 07:49 ]
Betreff des Beitrags: 

Harthas hat geschrieben:
Japp, das ist korrekt.

Mit empty kontrolliert man, ob eine Variable leer ist (Nicht existent ist, 0 oder false als Wert hat). Im ersten Fall tritt es also nur auf, wenn alive wirklich 0 ist (Der Spieler also Tod). In diesem Fall liefert empty true zurück.

Mit dem Ausrufezeichen (!) davor tritt die Nachfolgende Anweisung jedoch nur in Kraft, wenn die Variable eben NICHT leer ist. Wenn empty also false als Rückgabewert liefert.


Ein ! vor einer Funktion kehrt den Rückgabewert ins Gegenteil um - aus true wird false, aus false wird true.
Es ist der Übersichtlichkeit und der besseren Verständlichkeit anzuraten, das ! deshalb in die Bedinnung zu schreiben, damit keine Missverständnisse entstehen können.
Wobei die Form mit ! vor einem Wert natürlich einfacher und schneller zu schreiben ist *g*

Autor:  Harthas [ Sa 09 Jun, 2007 10:20 ]
Betreff des Beitrags: 

Okay, in diesem Falle war ich schlichtwegs falsch informiert gewesen ;-)

Das Ergebnis ist allerdings das gleiche *g*, Die If-Abfrage wird jeweils nur ausgeführt, wenn das Ergebnis (in diesem Falle) false ergibt, da sich dieses schliesslich in true abändert ^^

Autor:  Eliwood [ Sa 09 Jun, 2007 12:01 ]
Betreff des Beitrags: 

Harthas hat geschrieben:
Okay, in diesem Falle war ich schlichtwegs falsch informiert gewesen ;-)

Das Ergebnis ist allerdings das gleiche *g*, Die If-Abfrage wird jeweils nur ausgeführt, wenn das Ergebnis (in diesem Falle) false ergibt, da sich dieses schliesslich in true abändert ^^


Jaja, ich sag ja nicht, das es falsch ist :) Wenn leer - dann unwahr, und !unwahr, also nicht unwahr, ist wahr. Wobei nicht 2 zu unwahr wird, aber nicht 0 zu wahr. "" wird zu wahr, " " allerdings zu unwahr... :evil:

Autor:  Daeron [ Do 14 Jun, 2007 14:58 ]
Betreff des Beitrags: 

also ich habe ein probelem...
er öffnet zwar den kerker aber dann sehe ich nur eine weiße seite mit den ganzen beschreibungen und so weiter...

ich hoffe ihr könnt mir helfen^^

danke

edit:
Hier:
Problem

edit:

So hat sich erledigt^^

Autor:  Heximus [ Fr 24 Aug, 2007 20:24 ]
Betreff des Beitrags: 

Geb au ma wieder ne Frage ^^


Also kann man irgendwas bauen damit man einstellen kann wie lange ein USer sitzen soll??Also wenn ich den jetzt einbuchten will das ich dann auch einstellen kann (extra) WIE LANGE er drinn bleibt..Weil jetzt is die Standarteinstellung ja auf 2 Ingame Tage...Aber wenn er jez z.b. i-was Rassistisches sagt und er für 20 Tage rein soll das ich nicht immer wieder auf Einbuchten klicken muss...


Wäre nett wenn mir wer helfen würde ^^


Mfg,
Heximus

Autor:  MySql [ Fr 24 Aug, 2007 21:28 ]
Betreff des Beitrags: 

Manuell die Einsitzt Zeit eingeben ?

Autor:  Rikkarda [ Fr 24 Aug, 2007 22:37 ]
Betreff des Beitrags: 

ka ob das nu der kerker hack ist den ich habe, aber ich habs so gelöst:

öffne user.php

suche den part der infos des users

$this->bbcode_second_pass_code('', '$userinfo = array(
"Account Info,title",
"acctid"=>"User ID,viewonly",
"login"=>"Login",
"newpassword"=>"Neues Passwort",
"emailaddress"=>"Email Adresse",
"locked"=>"Account gesperrt,bool",')

füge hinzu (feldname halt mit deinem anpassen):

$this->bbcode_second_pass_code('', '"imprisoned"=>"Anzahl der Kerkertage?,int",')


dann kannst über den usereditor ne zahl eingeben für die zeit der haft



@mysql: sehr konstruktive hilfe ;)

Autor:  Heximus [ Sa 25 Aug, 2007 12:39 ]
Betreff des Beitrags: 

Also erst mal danke ^^

Hab aber leider ein Problem..Ich habe jetzt mal meinen Test Char eingelocht un es auf 50 Tage gesetzt...Aber in der Tabelle zeigt er es mir nicht an wie lange er sitzt...


Kann mir wer helfen??

$this->bbcode_second_pass_code('', ' "login"=>"Login",
"newpassword"=>"Neues Passwort",
"emailaddress"=>"Email Adresse",
"locked"=>"Account gesperrt,bool",
"imprisoned"=>"Anzahl der Kerkertage?,int",')


So sieht das jetzt bei mir in der User.php aus..


Mfg,
Heximus

Autor:  MySql [ Sa 25 Aug, 2007 14:30 ]
Betreff des Beitrags: 

Hast du in der DB auch das Feld auf int(11) gesetzt ? :?

Autor:  Rishiêll [ Sa 25 Aug, 2007 15:18 ]
Betreff des Beitrags: 

o.O INT geht bis etwas über 4 Millionen da reicht völlig tinyint unsigned also wirds wohl nicht daran liegen das das Feld zu klein ist für 50 :P Hmm hast du auch das richtige Datenbankfeld angegeben?

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