anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 16 Jul, 2019 19:13

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rassen per Datei.
BeitragVerfasst: Fr 13 Aug, 2010 22:41 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Guten Abend,

ich habe heute Nachmittag beim durchstöbern meiner alten Festplatte ein paar alte 'Arbeiten' von mir gefunden. Unter anderem, eine 'Arbeit' in der ich die Rassen aus der Datenbank und aus der newday.php genommen habe. Nun, nicht komplett aus der newday.php, lediglich die Verwaltung dieser.

Vielleicht mag diese 'Arbeit' nicht jeden ansprechen, muss sie aber auch nicht. Jeder hat ja bekanntlich einen anderen Geschmack. :)

Vorab ein kurzer Hinweis: Die Änderungen die man vornehmen muss, sind nicht gerade wenig.. Daher die ID's der Rassen wegfallen und lediglich deren Namen und auf Wunsch auch der Cname (Color-Name) in der Datenbank gespeichert werden.

Dann fangen wir einfach mal mit der Datenbankänderung an:

$this->bbcode_second_pass_code('', 'ALTER TABLE `accounts` CHANGE `race` `race` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL;
ALTER TABLE accounts ADD crace VARCHAR(255) NOT NULL;')

Für ein bereits vorhandenes LotGD:

$this->bbcode_second_pass_code('', 'UPDATE accounts SET race='';')

Nun die Änderungen:

    Zu ändernde Dateien:
  • forest.php
  • inn.php
  • newday.php
  • superuser.php
  • train.php
  • academy.php
  • gardens.php
  • rebirth.php
  • list.php
  • bio.php
  • special/goldmine.php
  • special/cookies.php
  • special/darkhorse.php
  • special/tempel.php
  • special/sacrificealtar.php

Suche in der Datei forest.php folgende Codestelle:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']==4) $badguy['creaturegold']*=1.1;
} else {
if ($session['user']['race']==4) $badguy['creaturegold']*=1.2;')

Und ersetze sie mit folgender:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']=='Zwerg') $badguy['creaturegold']*=1.1;
} else {
if ($session['user']['race']=='Zwerg') $badguy['creaturegold']*=1.2;')

Speichern und schließen.

Suche nun in der Datei inn.php folgende Codestelle:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']==1) $session['user']['attack']--;
if ($session['user']['race']==2) $session['user']['defence']--;
if ($session['user']['race']==5) $session['user']['maxhitpoints']--;
$session['user']['race']=0;')

Ersetze sie mit folgender:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']=='Troll') $session['user']['attack']--;
if ($session['user']['race']=='Elf') $session['user']['defence']--;
if ($session['user']['race']=='Echse') $session['user']['maxhitpoints']--;
$session['user']['race']='';')

Suche weiter:

$this->bbcode_second_pass_code('', 'if ($session[user][race]==4){')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session[user][race]=='Zwerg'){')

Öffne die train.php und suche:

$this->bbcode_second_pass_code('', 'if ($master[creaturename] == "Gadriel the Elven Ranger" && $session[user][race] == 2) {')

Ersetze den Code mit:

$this->bbcode_second_pass_code('', 'if ($master[creaturename] == "Gadriel the Elven Ranger" && $session[user][race] == 'Elf') {')

Öffne nun die academy.php und suche:

$this->bbcode_second_pass_code('', 'output("`vDurch schwere und reich verzierte Holztüren betrittst du den Zauberladen der Akademie. Hier bietet ein älterer Zauberer die Werke verschiedenster Akademie-Magier an, denen es gelungen ist, selbst magisch unbegabten ".($races[$session[user][race]])."en wie dir die Anwendung ihrer Zauber zu ermöglichen.");')

Ersetze sie durch:

$this->bbcode_second_pass_code('', 'output("`vDurch schwere und reich verzierte Holztüren betrittst du den Zauberladen der Akademie. Hier bietet ein älterer Zauberer die Werke verschiedenster Akademie-Magier an, denen es gelungen ist, selbst magisch unbegabten ".$session['user']['race']."en wie dir die Anwendung ihrer Zauber zu ermöglichen.");')

Öffne jetzt die gardens.php und suche folgende Codestelle:

$this->bbcode_second_pass_code('', '} else if (($session[user][race]==2 && $row[race]==4) || ($session[user][race]==4 && $row[race]==2)){
output("Du wartest im Garten auf `6$row[name]`0 und beobachtest ".($session[user][sex]?"ihn":"sie")." eine Weile. Bei näherer Betrachtung stellst du aber fest, dass Elfen und Zwerge vielleicht doch niemals zusammen passen werden.");')

Ersetze die Stelle durch:

$this->bbcode_second_pass_code('', '} else if (($session[user][race]=='Elf' && $row[race]=='Zwerg') || ($session[user][race]=='Zwerg' && $row[race]=='Elf')){
output("Du wartest im Garten auf `6$row[name]`0 und beobachtest ".($session[user][sex]?"ihn":"sie")." eine Weile. Bei näherer Betrachtung stellst du aber fest, dass Elfen und Zwerge vielleicht doch niemals zusammen passen werden.");')

Suche weiter:

$this->bbcode_second_pass_code('', '$sql = "SELECT acctid,name,sex,level,race,login,marriedto,charisma FROM accounts WHERE ')

Ersetze durch:

$this->bbcode_second_pass_code('', '$sql = "SELECT acctid,name,sex,level,crace,login,marriedto,charisma FROM accounts WHERE ')

Suche weiter:

$this->bbcode_second_pass_code('', 'output($colraces[$row['race']]);')

Ersetze durch:

$this->bbcode_second_pass_code('', 'output($row['crace']);')

Öffne nun die rebirth.php und suche: (2x)

$this->bbcode_second_pass_code('', '$session[user][race]=0;')

Ersetze 2x durch:

$this->bbcode_second_pass_code('', '$session[user][race]='';')

Öffne die list.php und suche: (2x)

$this->bbcode_second_pass_code('', '2x laston,loggedin,lastip,uniqueid,race')

Ersetze 2x durch:

$this->bbcode_second_pass_code('', 'laston,loggedin,lastip,uniqueid,crace')

Suche weiter:

$this->bbcode_second_pass_code('', 'output($colraces[$row['race']]);')

Ersetze durch:

$this->bbcode_second_pass_code('', 'output($row['crace']);')

Öffne die bio.php und suche:

$this->bbcode_second_pass_code('', 'output("`^Rasse: `@{$races[$row['race']]}`n");')

Ersetze durch:

$this->bbcode_second_pass_code('', 'output("`^Rasse: `@".$row['race']."`n");')

Folgende Änderungen sind für den Ordner Special/.

Öffne die Datei special/goldmine.php und suche:

$this->bbcode_second_pass_code('', 'if ($session['user']['race'] != 4) {')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session['user']['race'] != 'Zwerg') {')

Öffne nun die Datei special/cookies.php und suche:

$this->bbcode_second_pass_code('', 'if ((int)$session[user][race] == 5)')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ((int)$session[user][race] == 'Echse')')

Suche weiter:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 5) $rand = e_rand(1,6); // Echsen kriegen eher schlechte Kekse')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 'Echse') $rand = e_rand(1,6); // Echsen kriegen eher schlechte Kekse')

Suche weiter:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 1) {')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 'Troll') {')

Suche weiter:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 4) {')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session[user][race] == 'Zwerg') {')

Öffne nun die Datei special/darkhorse.php und suche:

$this->bbcode_second_pass_code('', 'switch($row['race']){
case 0:
output("`7Unbekannt`0");
break;
case 1:
output("`2Troll`0");
break;
case 2:
output("`^Elf`0");
break;
case 3:
output("`0Mensch`0");
break;
case 4:
output("`#Zwerg`0");
break;
case 5:
output("`5Echse`0");
break;
}')

Ersetze durch:

$this->bbcode_second_pass_code('', 'switch($row['race']){
case '':
case 'Unknown':
case 'Undefined':
output("`7Unbekannt`0");
break;
case 'Troll':
output("`2Troll`0");
break;
case 'Elf':
output("`^Elf`0");
break;
case 'Mensch':
output("`0Mensch`0");
break;
case 'Zwerg':
output("`#Zwerg`0");
break;
case 'Echse':
output("`5Echse`0");
break;
}')

Öffne nun die Datei special/tempel.php und suche:

$this->bbcode_second_pass_code('', 'addnews("`%".$session[user][name]."`7 wurde in einem Tempel von $gott_charm zu einem besser aussehenden ".($races[$session[user][race]])." `7gemacht.");')

Und ersetze durch:

$this->bbcode_second_pass_code('', 'addnews("`%".$session[user][name]."`7 wurde in einem Tempel von $gott_charm zu einem besser aussehenden ".$session[user][race]." `7gemacht.");')

Öffne im betreffendem Ordnern nun die letzte Datei special/sacrificealtar.php und suche:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']==4) $badguy['creaturegold']*=1.1;
} else {
if ($session['user']['race']==4) $badguy['creaturegold']*=1.2;')

Ersetze durch:

$this->bbcode_second_pass_code('', 'if ($session['user']['race']=='Zwerg') $badguy['creaturegold']*=1.1;
} else {
if ($session['user']['race']=='Zwerg') $badguy['creaturegold']*=1.2;')

Öffne nun im Hauptordner die Datei superuser.php und füge nach

$this->bbcode_second_pass_code('', 'if ($session[user][superuser]>=3) addnav("Stalltier Editor","mounts.php");')

Füge danach ein:

$this->bbcode_second_pass_code('', 'if ($session[user][superuser]>=3) addnav("Rasseneditor","races.php?editorStep=show");')

Öffne nun die letzte Datei newday.php
Füge am Anfang der Datei ein:

$this->bbcode_second_pass_code('', '$u = $session['user'];')

Suche:

$this->bbcode_second_pass_code('', '}else if ((int)$session['user']['race']==0){
page_header("Ein wenig über deine Vorgeschichte");
if ($_GET['setrace']!=""){
$session['user']['race']=(int)($_GET['setrace']);
switch($_GET['setrace']){
case "1":
$session['user']['attack']++;
output("`2Als Troll warst du immer auf dich alleine gestellt. Die Möglichkeiten des Kampfs sind dir nicht fremd.`n`^Du erhältst einen zusätzlichen Punkt auf deinen Angriffswert!");
break;
case "2":
$session['user']['defence']++;
output("`^Als Elf bist du dir immer allem bewusst, was um dich herum passiert. Nur sehr wenig kann dich überraschen.`nDu bekommst einen zusätzlichen Punkt auf deinen Verteidigungswert!");
break;
case "3":
output("`&Deine Größe und Stärke als Mensch erlaubt es dir, Waffen ohne große Anstrengungen zu führen und dadurch länger durchzuhalten, als andere Rassen.`n`^Du hast jeden Tag einen zusätzlichen Waldkampf!");
break;
case "4":
output("`#Als Zwerg fällt es dir leicht, den Wert bestimmter Güter besser einzuschätzen.`n`^Du bekommst mehr Gold durch Waldkämpfe!");
break;
case "5":
output("`5Als Echsenwesen hast du durch deine Häutungen einen klaren gesundheitlichen Vorteil gegenüber anderen Rassen.`n`^Du startest mit einem permanenten Lebenspunkt mehr!");
$session['user']['maxhitpoints']++;
break;
}
addnav("Weiter","newday.php?continue=1$resline");
if ($session['user']['dragonkills']==0 && $session['user']['level']==1){
addnews("`#{$session[user][name]} `#hat unsere Welt betreten. Willkommen!");
}
}else{
output("Wo bist du aufgewachsen?`n`n");
output("<a href='newday.php?setrace=1$resline'>In den Sümpfen von Glukmoore</a> als `2Troll`0, auf dich alleine gestellt seit dem Moment, als du aus der lederartigen Hülle deines Eis geschlüpft bist und aus den Knochen deiner ungeschlüpften Geschwister ein erstes Festmahl gemacht hast.`n`n",true);
output("<a href='newday.php?setrace=2$resline'>Hoch über den Bäumen</a> des Waldes Glorfindal, in zerbrechlich wirkenden, kunstvoll verzierten Bauten der `^Elfen`0, die so aussehen, als ob sie beim leisesten Windhauch zusammenstürzen würden und doch schon Jahrhunderte überdauern.`n`n",true);
output("<a href='newday.php?setrace=3$resline'>Im Flachland in der Stadt Romar</a>, der Stadt der `&Menschen`0. Du hast immer nur zu deinem Vater aufgesehen und bist jedem seiner Schritte gefolgt, bis er auszog den `@Grünen Drachen`0 zu vernichten und nie wieder gesehen wurde.`n`n",true);
output("<a href='newday.php?setrace=4$resline'>Tief in der Unterirdischen Festung Qexelcrag</a>, der Heimat der edlen und starken `#Zwerge`0, deren Verlangen nach Besitz und Reichtum in keinem Verhältnis zu ihrer Körpergrösse steht.`n`n",true);
output("<a href='newday.php?setrace=5$resline'>In einem Erdloch in der öden Landschaft</a> weit außerhalb jeder Siedlung bist du als `5Echsenwesen`0 aus deinem Ei geschlüpft. Artverwandt mit den Drachen hast du es nicht leicht in dieser Welt.`n`n",true);
addnav("Wähle deine Rasse");
addnav("`2Troll`0","newday.php?setrace=1$resline");
addnav("`^Elf`0","newday.php?setrace=2$resline");
addnav("`&Mensch`0","newday.php?setrace=3$resline");
addnav("`#Zwerg`0","newday.php?setrace=4$resline");
addnav("`5Echse`0","newday.php?setrace=5$resline");
addnav("","newday.php?setrace=1$resline");
addnav("","newday.php?setrace=2$resline");
addnav("","newday.php?setrace=3$resline");
addnav("","newday.php?setrace=4$resline");
addnav("","newday.php?setrace=5$resline");
}
}')

Ersetze den Code vollständig mit:

$this->bbcode_second_pass_code('', '}else if( $u['race'] == '' || $u['race'] == 'Unknown' || is_numeric($u['race']) ) {

switch( $_GET['setRace'] ) {

case 0:

page_header('Ein wenig über deine Vorgeschichte');

output('Wähle bitte deine Herkunft bzw. Rasse.`n`n');

$d = dir('Races');

while( false !== ($e = $d->read()) ) {

if( strpos($e, '.race') === false ) continue;
if( substr($e,0,1) == '.' ) continue;

$mySpliter = explode('_',$e);

if( $mySpliter[0] ) {

$i++;
$myData[$i] = unserialize(file_get_contents('Races/'.$e));
$myFiles[$i] = substr($e,2,-5);

}

}

addnav('Rassen');

if( count($myData) > 0 ) {

$i=0;
while( $i < count($myData) ) {

$i++;

if( $u['dragonkills'] >= $myData[$i][0]['Dk'] ) {

if( !getsetting('colorrace_newday',false) ) {

addnav($myData[$i]['Name'],'newday.php?setRace=1&file='.$myFiles[$i].$resline);

} else {

addnav($myData[$i]['cName'],'newday.php?setRace=1&file='.$myFiles[$i].$resline);

}

addnav('','newday.php?setRace=1&file='.$myFiles[$i].$resline);

$myExplode = explode('<LINK>',$myData[$i]['Desc']);

output('<a href="newday.php?setRace=1&file='.$myFiles[$i].$resline.'">'.$myExplode[0].'</a>'.$myExplode[1].'`n`n',true);

}

}

} else {

addnav('Undefined','newday.php?setRace=1&file=undefined'.$resline);
output('Leider sind derzeit keine Rassen verfügbar. Wende Dich bitte an einen Systemadministratoren!');

}

addnav('Aktualisieren','newday.php');

break;

case 1:

if( $_GET['file'] == 'undefined' ) {

page_header('Keine Rassen verfügbar!');

output('Leider sind keine Rassen verfügbar. - Wende Dich bitte an einen Systemadministrator.');
$session['user']['race'] = $_GET['file'];

} else {

$race = unserialize(file_get_contents('Races/1_'.$_GET['file'].'.race'));

page_header('Die '.$race['Plural']);

output($race['Final_Desc'],true);
$session['user']['race'] = $race['Name'];
$session['user']['crace'] = $race['cName'];

if( $race['Bonus_Feld'] !== FALSE && is_numeric($race['Bonus']) ) {

$session['user'][$race['Bonus_Feld']] += $race['Bonus'];

}

}

if( $session['user']['dragonkills'] == 0 && $session['user']['level'] = 1 ) {

addnews('`#'.$session[user][name].' `#hat unsere Welt betreten. Willkommen!');

}

addnav('Aktionen');
addnav('Weiter','newday.php?continue=1'.$resline);

break;
}

}')

Nun noch das Archiv runterladen und den Ordner Races mit den Dateien in den Hauptordner laden und die Datei races.php ebenso.

Feedback gern' gesehen.

Liebe Grüße,
Joel aka MySQL.

Nachtrag:

Der Ordner Races muss Schreibrechte besitzen und die neu erstellten Rassen werden Standardmäßig auf 'deaktiviert' gesetzt.


Dateianhänge:
Races.zip [4.81 KIB]
48-mal heruntergeladen
Races.rar [4.57 KIB]
46-mal heruntergeladen

_________________
Never change a running system. Bullshit! ;)


Zuletzt geändert von MySql am Sa 14 Aug, 2010 00:56, insgesamt 2-mal geändert.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rassen per Datei.
BeitragVerfasst: Fr 13 Aug, 2010 23:11 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Wow, eine riesige Liste von Änderungen... aber warum? Du beschreibst zwar das du Inhalt aus den Dateien heraus ziehst, aber was soll der Sinn dessen sein?

Zumal diese Änderung architektonisch rückschrittig ist. Die Handhabe über Schlüssel und Zusammenfassenden Arrays ist wesentlich flexibler, falls einmal eine Rasse umbenannt werden soll oder ähnliches.

Das soll jetzt kein persönliches Angriff sein, aber diese Modifikation erscheint mir schlicht unsinnig.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rassen per Datei.
BeitragVerfasst: Sa 14 Aug, 2010 11:24 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Hay. :)

Stimmt daran hatte ich gar nicht gedacht. Was zumindest die Namensänderung einer Rasse angeht. Hier könnte man in der common.php noch mal extra ein Array platzieren, welches die 'Ids' der einzelnen Rassen festhält und welches bei einer Rassenumbenennenug abgeändert werden müsste.

$this->bbcode_second_pass_code('', '$arr = array('Troll' => 1,'Elf' => 2,'Mensch' => 3,'Zwerg' => 4,'Echse' => 5);')

Vielleicht erstellt man dann noch eine Variable, in der man direkt den Wert der Rasse speichert.

$this->bbcode_second_pass_code('', '$var = $arr[$session['user']['race']];')

Demnach müsste man nun nur noch die Variable in einer If-Abfrage angegeben und dann würde es 'fast' o.K sein.

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rassen per Datei.
BeitragVerfasst: Sa 14 Aug, 2010 11:35 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3921
Wohnort: Basel
Geschlecht: Männlich
Und wenn man das so macht, dann hat man genau... keinen Vorteil durch deine Modifikation. Denn man müsste beim hinzufügen einer weiteren Rasse immernoch viele Dateien bearbeiten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rassen per Datei.
BeitragVerfasst: So 15 Aug, 2010 21:02 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 124
:bash:

Ein gutes caching system (Memcache, APC und co) oder notfalls ein cache on disk wäre hier ne sinnvolle lösung.

Das hier ist naja.


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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