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

etwas von mehr Orten zugänglich machen
http://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=5190
Seite 1 von 1

Autor:  Yoichiro [ Fr 10 Sep, 2010 05:48 ]
Betreff des Beitrags:  etwas von mehr Orten zugänglich machen

Ja, ich weiß, komischer Betreff, aber anders konnte ich irgendwie nicht zusammenfassen was ich meine ^^

Es geht mir um die Bank, Bürgerliste, Garten, Jägerhütte. Und zwar will ich ne 2. Stadt raufspielen und will da auch diese Orte verlinken. Nur solls dann halt so sein, dass man auch in der Stadt landet, von der aus man z.B. den Garten betreten hat, wenn man auf "Zurück zur Stadt" klickt ^^

Ein paar Gedanken hab ich mir drum gemacht, aber irgendwie... Äh, ja ^^

if{
$ession[user][location]==village.php
addnav('zurück zur Stadt','village.php');

}else{
$ession [user][location]==village2.php
addnav('zurück zur Stadt','village2.php');

}


Nich hauen, ich bin mir ja selber sicher, dass ichs vermurkst hab, aber so irgendwie muss es ja nen Bezug auf den Standort haben, dass man in der richtigen Stadt landet.

Autor:  Tidus [ Fr 10 Sep, 2010 08:19 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

oh man, also ich bin mir sicher das du wenn du mal ordentlich gesucht hättest min 2 Themen gefunden hättest die etwas ähnliches behandeln, wie z.b. im RP-Ort thread aber gut.


location funktioniert nur mit Nummern da es ein int feld ist, sollte klar sein nech?

wenn du es über location machen willst musst du in den ort village2.php z.b. $session['user']['location'] = 123; machen und natürlich für jeden ort eine andere zahl ...

dann kannst du in den dateien, wenn du es einfach haben willst mit if ($session['user']['location'] == 123) {} den rück link setzen.

es gibt auch per GET ne mehtode die man sich logd intern abkupfern könnte ich sag nur "return" aber naja, das dürfte für dich wohl das einfachste sein.

gruß..

Autor:  Kevz [ Fr 10 Sep, 2010 09:56 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Wie wäre es mit einem Referrer-Link?

Autor:  Minerva [ Fr 10 Sep, 2010 11:51 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

2 Möglichkeiten
die eine haste ja shcon so ähnelich
ich hatte damals 4 Welten und da sollte man dann von jeder auch zur Kämpferliste kommen
entweder mit referal link wie bei den Bios (was aber zu problemen kommen kann, wenn des Ding zu lang wird, also vorsicht damit!)
oder etwas einfacher
man mache sich ein weiteres db feld oder nutze location (was allerdings zu loginfehlern kommen kann, wenn man das in der login.php nicht einstellt)
mache dann wenn man die eine village betritt dort hinein (wohlgemekt bei den Städten, nicht bei den Orten die erreichbar sein sollen)
$session['user']['feld']="irgendwas";
bei jeder natürlich anders
und dan in den Orten eine switchabfrage wodurch man dann an diese Orte gelangt

sind die einfachsten Möglichkeiten (jaja, ein weiteres db-feld, hach wie schlimm, aber da finde ich es wenigstens sinnvoll im gegensatz zu manch andren Sachen..)

hoffe das hilft dir weiter
mfg, dat Mine

Autor:  Eliwood [ Fr 10 Sep, 2010 12:41 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Das Problem kann man ohne grossen Aufwand ziemlich einfach lösen. Dazu benötigt man ein zusätzliches Datenbankfeld, nennen wir es "village" (tinyint müsste reichen). Die village.php musst du soweit aufräumen, dass du, in Abhängigkeit des Inhalts von $session['user']['village'] eine jeweils andere Stadt anzeigst, zum Beispiel über zusätzliche Dateien. Bei den Navigationspunkten für das Reisen in die Stadt übergibst du dann eine GET-Variable, zum Beispiel "village.php?setvillage=3", wenn du die "Die Stadt in den Bergen" betreten willst.

Die village.php sieht dann schematisch in etwa so aus:
Code:
if(isset($_GET['setvillage']) AND is_numeric($_GET['setvillage'])) {
  $session['user']['village'] = $_GET['setvillage'];
}

switch($session['user']['village']) {
  default: {
    Include './villages/0-metropolis.php
    break;
  }

  case 1: {
    Include './villages/1-smallville.php
    break;
  }

  case 2: {
    Include './villages/2-gotham.php
    break;
  }

  case 3: {
    Include './villages/3-stadtindenbergen.php
    break;
  }
}


Jeder direkte Link zur village.php führt sofort in die Stadt des letzten Besuchs.

Autor:  Tidus [ Fr 10 Sep, 2010 13:11 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

@Yoichiro möchte ja kein spielverderber sein, habe nur zweckmäßig mal deine source besichtigt, und muss sagen du hast zwar eine source.php aber viele dateien sind nicht gerade offen, daher wären in meinen augen die "bedingungen" um hilfe zu bekommen, nicht erfüllt weshalb ich auch den Support einstelle. Ich schreib das hier nur für die, die es auch noch oder wieder so machen und nicht in die Source gekuckt haben weil es grad nicht notwenig ist ;)

grüße

Autor:  Patzue [ Fr 10 Sep, 2010 14:08 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Da ich ja immer ein Freund von Datenbankeinträgen bin :P

Kann man nicht einfach hingehen.. Man nimmt die list.php und nimmt sie so wie sie ist und speichert sie als list2.php ab (also dass man list.php und list2.php hat) und dann einfach in list2.php den Addnav anpassen und von der 2. Stadt den Link zur Kämpferliste über list2.php machen

so auch mit garden & co.

Oder dürfte ja auch gehen?

Autor:  Auric [ Fr 10 Sep, 2010 15:08 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

@patzue: Natürlich "geht" das. Allerdings ist es wohl die hässlichstmögliche Lösung, da man unnötige Redundanzen aufbaut. Wenn du dann ein neues Feature (etwa die RP-Lämpchen) einbauen willst, musst du alle kopierten Dateien modifizieren usw.

Eliwoods Lösung sollte mittelfristig schon recht gut sein.

Autor:  Minerva [ So 12 Sep, 2010 11:38 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Würde mal eben sagen: nein geht nicht
wenn du nicht gerade popup-bios hast werden die Spieler dann immer zur list.php und nicht zur list2.php zurück geleitet, sind also wieder in der Anfangsstadt...
Ziel nicht erreicht und somit klappt das nicht so wie gewünscht
Gut bei andren Dingen funktionierts, aber denke mal die List gehört zu den Dingern die du von überall erreichbar haben willst und da ist die Lösung von mir oder Eliwood (db-Feld brauchste ja bei beiden, da ist es egal, welche Lösung)
Ohne geht es hier nicht! (zumindest nicht sinnvoll)

Autor:  Linus [ So 12 Sep, 2010 12:55 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Würde schon gehen. Die bio.php nutzt ja ausgiebig den Referer-Link. Wenn du einen Link zur Bio auf dem Marktplatz anklickst landest du beim Zurück ja auch wieder dort, und nicht in der Kämpferliste.
Aber es ist so wie Auric schon schrieb, zu musst wirklich jede involvierte Datei anfassen, also auch in der lits2.php die Links zur bio.php ändern. Die schlechteste Lösung, prädestiniert dazu bald die Übersicht zu verlieren. Fehler sind da fast vorprogrammiert!

Autor:  Yoichiro [ Di 14 Sep, 2010 05:18 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Ok, vielen Dank für euren antworten :)
Da stellt man es sich so leicht vor und dann ist das so ein Gefuddel xD

@Tidus: Stimmt, etliches ist zu, aber das hat Gründe. Luzifel hat diese Dinge exklusiv für Shibaya gemacht. Er will diese Dinge nicht veröffentlichen. also bleiben die zu und die Dateien, die damit involviert sind, natürlich auch.
Ich hab mir trotzdem mal den Source Viewer angesehen und einiges aufgemacht, das aus irgendwelchen mir unerfindlichen Gründen zu war. Kommt davon wenn man aufspielen und konfigurieren lässt und dabei bleibt ^^

Autor:  Serafan [ Mi 29 Sep, 2010 14:18 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Hi, also ich bastel nun schon die ganze nacht daran, aber vlt sehe ich den wald vor lauter bäumen nicht mehr,

habe mir nun mal aus ein paar skripten eine zweite ortschaft zusammengebastelt, soweit so gut, dort will ich einen zweiten wald (in dem fall katakomben) integrieren... hat soweit auch funktioniert hat seine eigenen links usw..., nur habe ich nun das problem das wenn von dort aus ein spezial aufgerufen wird lande ich immer wieder im alten wald, ich finde die zu ändernde stelle einfach nicht.... verzweifel

mein zweites "kleines" problem ist das ich solche orte wie die zb. bücherei gerne von beiden ortschaften aufrufen möchte und natürlich beim zurückgehen wieder an den ausgangsort gelangen will...

habe mir von daher mal aus der bio die funktion geklaut und versucht sie für meine zwecke zu kürzen aber egal was ich versuche es will nicht wie ich, irgendwas scheint zu fehlen... momentan schaut das ganze so aus:

Code:
$ret = $_REQUEST['ret'];
($_GET['ret']=='')
$return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET[ret]);
    $return = substr($return,strrpos($return,"/")+1);
    addnav("Zurück",$return);



und spuckt mir diesen Fehler aus:
Zitat:
Parse error: syntax error, unexpected T_VARIABLE in /is/htdocs/wp10473664_4UVIR07Y97/www/o-players.com/logd/library.php on line 381


In zeile 381 befindet sich das aus dem codeschnipsel:
Zitat:
$return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET[ret]);


Habe es ehrlich zig mal über die sufu versucht, aber ich finde nichts das für mich verständlich ist :) ich hoffe ihr verzeiht mir, ich lerne noch ;)

Autor:  Eliwood [ Mi 29 Sep, 2010 15:43 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Code:
$ret = $_REQUEST['ret'];
($_GET['ret']=='')
$return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET[ret]);
    $return = substr($return,strrpos($return,"/")+1);
    addnav("Zurück",$return);


Da fehlt ein if vor der Klammer:

Code:
$ret = $_REQUEST['ret'];
if ($_GET['ret']=='')
$return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET[ret]);
    $return = substr($return,strrpos($return,"/")+1);
    addnav("Zurück",$return);


Das macht aber so keinen Sin - wenn $_GET['ret'] leer ist, soll er mit $_GET['ret'] weiterarbeiten? Gemeint ist eher:

Code:
$ret = $_REQUEST['ret'];
if (!empty($_GET['ret'])) {
    $return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET['ret']);
    $return = substr($return,strrpos($return,"/")+1);
    addnav("Zurück",$return);
}


Wobei das nur geraten ist. Zudem seh ich den Sinn der obersten Zeile nicht, $_REQUEST sollte in LoGD sowieso nicht verwendet werden um auf $_GET-Variablen zuzugreifen.

Autor:  Serafan [ Mi 29 Sep, 2010 16:29 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Danke für die schnelle antwort!
Vlt sollte ich dazusagen das ich die DS-version verwende, habe deinen unteren Schnipsle mal versucht, er schmeist zumindest keinen Fehler aus, leider macht er auch nichts anderes erkennbares!

Wenn ich den von mir mit dem fehlenden IF verwende habe ich zumindest den Nav punkt aber ohne Link also als hätte ich einfach
Code:
 addnav('Zurück');

verwendet!

Wie gesagt habe den Teil einfach zusammenkopiert, daher kann ich dir auch nicht wirklich sagen was er macht (bzw vermutete bis eben einfach das es eine gängige Methode wäre die Variable mit der vorhergehenden url zu füllen)
Nurmal so aus interesse warum sollte man $_REQUEST nicht verwenden? habe ich nämlich ziemlich oft in den Scripten gefunden!

ok... habe es nun so gelöst...
Code:
addnav('Zurück');
if($session['user']['alive']) {
    if($session['user']['imprisoned']) {
        addnav('Zum Kerker','prison.php');
    }
    else if ($session['user']['location']<3){
        addnav('Zum Dorfplatz','village.php');
        addnav('Zum Marktplatz','market.php');
    }
    else if ($session['user']['location']=3){
        addnav('Zurück','toteninsel.php');
    }   
}
else {
    addnav('Zu den Schatten','shades.php');
}

nicht ganz so schön wie ichs wollte :) aber es funktioniert!

Weis hat vlt noch jemand einen Gedankenanstoß zu meinem Problem mit den Waldspezials?

Autor:  Eliwood [ Do 30 Sep, 2010 07:35 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Ich kenn die DS3 nicht, vielleicht hat die Mechanismen, um $_REQUEST zu schützen. Die $_GET-Variablen können auf (normalen) Seiten nur gegebene Werte annehmen, den man nicht ändern kann. Anders liegt es bei $_POST-Werten. $_REQUEST beinhaltet nun aber leider (normalerweise) die Inhalte des aktuellen Requests - ruft man die Seite normal über GET auf, sinds die Inhalte von $_GET, ansonsten die von $_POST - und letztere kann man manipulieren. Ohne gröberen Schutz kann man nun jeden GET-Request auch als POST-Request setzen und so Variablen einsetzen lassen, die illegal sind.

@Neues Problem:
Welche Lösung hast du verwendet? Mit der letzteren sollte das nicht passieren, da fehlt wenn, dann der komplette Nav. Ich sagte ja, dass ich ohne mehr Code nicht viel Logik korrigieren kann. Vermutlich sollte das hier funktionieren:
Code:
if (!empty($_GET['ret'])) {
    $return = preg_replace("'[&?]c=[[:digit:]-]+'","",$_GET['ret']);
    $return = substr($return,strrpos($return,"/")+1);
    addnav("Zurück",$return);
}
else {
    addnav('Zurück', 'village.php'); // Anstatt village.php eventuell anderes Ziel nehmen, weiss ja nicht, wo "zurück" sein soll.
}


Wenn ich aber dein eigentlicher Wunsch so lese, dann such ich dir nachher gleich mal den Link zu einer besseren Lösung raus.

Edit: Bitte sehr:
viewtopic.php?f=34&t=5190
Die Verwendung von ret-Links ist, wenn möglich, zu vermeiden, da die (saubere) Behandlung mühsam ist.

Autor:  Salator [ Sa 02 Okt, 2010 22:40 ]
Betreff des Beitrags:  Re: etwas von mehr Orten zugänglich machen

Zu den Waldspecials: Die haben alle einen Link in der Art forest.php?op=leave
Jetzt könnte man sämtliche Specials umschreiben, dass das aufrufende Script als Variable gespeichert wird. Diese Sklavenarbeit macht sicher kein Mensch.
Als Workaround könnte man die forest.php bearbeiten. Hier haben wir 2 mal eine Zeile, wo die Specials eingebunden werden:
include('./special/'.$specialinc); (ziemlich weit oben, wirkt für mehrteilige Specials und ist in diesem Fall interessant)
bzw
include("special/".$waldspecial); (der erstmalige Aufruf eines Specials, bei einteiligen Specials gehts danach im forest-Script weiter. Dieser Fall sollte für eine forest-Kopie uninteressant sein)

Nach dieser (oberen) include-Zeile könnte man sich einklinken und in Abhängigkeit von $session['user']['location'] auf einen anderen Ort redirecten oder Nav erstellen.
Ich selbst habe auf meinem Server das RP-Levelsystem von Luzifel runderneuert und erweitert, so dass auch Specials im RP auftreten können. Der Rücksprung sieht bei mir so aus:
Code:
    include('./special/'.$specialinc);
    if($session['user']['specialinc']=='' && $session['rpgspecialreturn']!='') //RP-Levelsystem: Backlink von Specials
    {
        addnav('Zum RPG',$session['rpgspecialreturn']);
        unset($session['rpgspecialreturn']);
    }
    output('`n`0');

Die Variable $session['rpgspecialreturn'] muss natürlich im aufrufenden Script gesetzt werden.

P.S.: Vielleicht ist auch die von mir überarbeitete Version der Häfen für dich interessant
viewtopic.php?f=34&t=4967

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