Sodala,
Nach längerer Zeit heute habe ich etwas fertiggebracht, nach dem ich von einigen bekannten Serverbetreibern desöfteren gefragt worden bin.
Features:
- Möglichkeit eine eigene Waffe zu benennen
- Die Waffe (Der Name, nicht die Werte) bleiben über den DK erhalten
- Umbenennen für Donationpoints (standard: 100 Punkte)
- Kein kaufen neuer Waffen - Schleifen der erhaltenen
- Anzeige der persönlichen Waffe in der Bio (Auch hier nur der Name, wie stark die Waffe ist bleibt zwecks Spionage verborgen)
To-Do:
- Auf Rüstungen ausweiten (Wenn der Code soweit für die Waffen als Funktionabel zurückgegeben wurde)
- Festlegung auf eine Option um die Vorraussetzung fürs Schmieden zu erfüllen
- Eventuelles permantens Aufwerten der Waffe zu hohem Preis (A la Heldenweg)
Genauere Beschreibung:
Der Waffenhändler (Im Standardrelease) MightyE bietet einem Spieler an eine persönlich auf ihn zugeschnittene Waffe zu schmieden, allerdings benötigt er dafür ein besonderes Material - Drachenerz (In dem Bezug war ich unkreativ). Dieses Material sollte schwer zu erwerben sein, ich habe es für den Anfang bei 25 DK's angedacht, es ist aber genauso denkbar dass ihr es für Donationpunkte kaufbar macht, es in ein Waldspecial einbindet oder was euch sonst noch so einfällt ;-)
Hat man das Erz beschafft erklärt sich der Schmied dazu bereit eine Waffe zu schmieden, deren Name individuell bestimmt werden kann - Das Script dafür ist mehr oder minder aus der lodge.php geklaut, die Anerkennung dafür geht also nicht an mich. Ist das geschehen verliert der Spieler die Möglichkeit eine andere Waffe zu kaufen, stattdessen lässt er die Waffe schleifen, doch diese personalisierung hat seinen Preis: Da man keine Waffe mehr "zurückgibt" gibt es auch kein Gold mehr im Austausch für vorherige Stufen zurück. Ich selbst empfinde das als akzeptabel für Spieler mit höheren DK's die auf Ressourcen aus Häusern zurückgreifen können oder Edelsteine verkaufen, da sie sie ohnehin nurnoch für wenig anderes brauchen. Wem das zu Hart ist, dem sei gestattet die Preise in der weapons.php anzupassen
Here we go:
SQL:
$this->bbcode_second_pass_code('', 'ALTER TABLE `accounts` add waffe tinyint(1) default 0;
ALTER TABLE `accounts` add ruestung tinyint(1) default 0;
ALTER TABLE `accounts` add drachenerz tinyint(1) default 0; ')
Um den Spieler Drachenerz finden zu lassen an beliebiger Stelle
$this->bbcode_second_pass_code('', '$session['user']['drachenerz']++;
')
zufügen - zum testen meinetwegen auch in die superuser.php

$this->bbcode_second_pass_code('', '
öffne weapons.php
Suche:
checkday();
Füge darunter ein:
$pointsavailable=$session['user']['donation']-$session['user']['donationspent'];
# Preise für das Schleifen der eigenen Waffe
$preis = array("48", "225", "585", "990", "1575", "2250", "2790", "3420", "4230", "5040", "5850", "6840", "8010", "9000", "10350");
# \Preise für das Schleifen der eigenen Waffe
suche:
addnav("Waffen anschauen","weapons.php?op=peruse");
Ersetze durch
if ($session['user']['waffe']!=1){
addnav("Waffen anschauen","weapons.php?op=peruse");
addnav("Eine eigene Waffe schmieden lassen","weapons.php?op=schmied");
}else{
addnav("Waffe schärfen lassen","weapons.php?op=scharf");
output("`^Thorgas `7weist dich desweiteren darauf hin, dass er deine Waffe aus Drachenerz für `#100 Donationpunkte `7nocheinmal
Umschieden könnte!");
if ($pointsavailable>=100) addnav("Deine Waffe umbenennen","weapons.php?op=herstellen");
}
Suche:
page_footer();
?>
Füge davor ein:if ($_GET[op]=="schmied"){
output("`^Thorgas `7buschige Augenbrauen heben sich, als du nähertrittst und ihm leise erzählst, dass du eine ganz besondere Waffe
suchst. Eine weile mustert er dich abschätzend, dann jedoch wendet er sich mit einem seltsamen Glänzen um, dir dabei mit einem
Wink deutend mit ihm zu kommen. `n
`n
Der `^Zwerg `7verschwindet einen moment hinter einem der massiven Steintafeln, die sein Werkzeug fassen, nur um kurz darauf mit
einem grossen Pergament in den Händen wieder aufzutauchen. Ein seltsamer Anblick für diesen stämmigen Schmied. Als er das Pergament
vorsichtig wie einen Schatz aufrollt und dir zeigt, bist du im ersten moment völlig überwältigt. Nicht wegen dem was du erkennst
sondern vielmehr deshalb, weil du eigentlich garnichts erkennst. Zahlreiche Linien, Dreiecke und andere Formen sind darauf
abgebildet doch nichts davon ergibt einen Sinn für dich, dennoch nickst du fast automatisch als er leise `&\"Ist sie nicht
grossartig?\" `7flüstert. `n
`n
Eine lange Zeit später hat er dir schliesslich erklärt, um was es sich handelt - eine Methode ein Erz zu verhütten, dass
tausendmal härter ist als das Eisen aus dem gewöhnliche Waffen geschmiedet werden und wesentlich besser zu verarbeiten, er könnte
daraus jede Waffe herstellen die sich ein Wesen ersinnen könnte. `n
`n");
if ($session['user']['drachenerz']!=0){
output("Umso aufgeregter wird er als du einen Brocken Erz aus deinen Taschen hervorkramst und `^Thorgas `7zeigst, der darauf
fast in Ohnmacht fällt `&\"Das ist es, das ist es!\" `7brummelt er aufgeregt in seinen Bart hinein nur um dich dann fast schon
flehend anzusehen dir eine Waffe daraus herstellen zu dürfen, scheinends ist der Zwerg selbst versessen darauf eine solche
Waffe erproben zu können.");
addnav("Eine solche Waffe schmieden lassen","weapons.php?op=herstellen");
//addnav("Vielleicht ein andermal ...","weapons.php");
}else{
output("`&\"Dieses Erz\" `7beginnt er leise zu erzählen `&\"wurde bisher nur in den Höhlen der gefährlichen `2Grünen Drachen `&
gefunden, niemand weiss wie es entsteht aber irgendwas müssen diese Biester machen, das es entstehen lässt!\". `^Thorgas `7
versichernd, dass du dich nach diesem Erz umsehen wirst, wenn du einmal die Höhle eines `2Grünen Drachens `7betrittst lässt
du den verträumten Zwerg ersteinmal mit seinen Gedanken allein.");
}
addnav("Zurück zur Schmiede","weapons.php");
}
#Eigene Waffen erstellen by Dragondust - greatly inspired by lodge.php
if ($_GET[op]=="herstellen"){
addnav("Lieber doch nicht","weapons.php");
output("`bEine Waffe schmieden`b");
output("`n`nDer Name deiner Waffe darf Farbcodes enthalten, allerdings muss er kürzer als 50 Buchstaben sein.`n");
$n = $session[user][name];
$regname = ($session['user']['weapon']);
if ($session['user']['waffe']>=1)
output("`\$Das umbenennen deiner Waffe kostet dich 100 Donationpoints!`0`n");
output("Der momentane Waffenname ist: ");
$output.=$regname;
output(", und so wird er aussehen: $regname");
output("`n`n`0Wie soll der Waffenname lauten?`n");
$output.="<form action='weapons.php?op=namepreview' method='POST'><input name='newname' value=\"".HTMLEntities($regname)."\" size=\"30\" maxlength=\"30\"> <input type='submit' value='Vorschau'></form>";
addnav("","weapons.php?op=namepreview");
}
if ($_GET['op']=="namepreview"){
addnav("Zurück zur Lodge","lodge.php");
$n = $session[user][name];
$_POST['newname']=str_replace("`0","",$_POST['newname']);
if (strlen($_POST['newname'])>50) $msg.="Dein neuer name ist zu lang, inklusive Farbcodes darf er nicht länger als 30 Zeichen sein.`n";
if ($msg==""){
output("Der Name deiner Waffe wird folgendermaßen lauten: {$_POST['newname']}`n`n`0Ist es das was du willst?`n`n");
$output.="<form action=\"weapons.php?op=changename\" method='POST'><input type='hidden' name='name' value=\"".HTMLEntities($_POST['newname'])."\"><input type='submit' value='Ja' class='button'>, ändere meine Waffe auf ".appoencode("{$_POST['newname']}`0")." </form>";
output("`n`n<a href='weapons.php?op=herstellen'>Nein, lass es mich nochmal probieren</a>",true);
addnav("","weapons.php?op=herstellen");
addnav("","weapons.php?op=changename");
}else{
output("`bFalscher Name`b`n$msg");
output("Der momentane Waffenname ist: ");
$output.=$regname;
output(", und so wird er aussehen: $regname");
output("`n`n`0Wie soll der Waffenname lauten?`n");
$output.="<form action='weapons.php?op=namepreview' method='POST'><input name='newname' value=\"".HTMLEntities($regname)."\"size=\"30\" maxlength=\"30\"> <input type='submit' value='Vorschau'></form>";
addnav("","weapons.php?op=namepreview");
}
}
if ($_GET['op']=="changename"){
$session['user']['weapon'] = $_POST['name'];
if ($session['user']['waffe']!=1) {
$session['user']['drachenerz']--;
$session['user']['waffe'] = 1;
}else{
$session['user']['donationspent']+=100;
}
addnews("".$session['user']['name']."`^ führt nun ".$_POST['name']." `^als Waffe! `0");
output("`^Nach zahllosen Stunden des schweisses und des Schmiedens kommt dir
`^Thorgas mit einem glücklichen Grinsen entgegen, dass wohl nichteinmal ein zwegisches Starkbier
hervorgerufen hätte. Viel zu aufgeregt um zu reden überreicht er dir {$session['user']['weapon']} `^mit dem
Versprechen, die Waffe für dich zu schleifen wann immer es nötig sein sollte!`n`n");
addnav("Zurück zur Schmiede","weapons.php");
}
# Waffenkauf abgeschlossen
# Schleifen der Waffe
if ($_GET[op]=="scharf"){
output("`^Thorgas `7erkennt in dir einen seiner Lieblingskunden, weshalb er seine Arbeit niederlegt um mit dir über all die
Wesen zu plaudern, die du mit $session[user][weapon] bereits getötet hast. `n");
if ($session['user']['weapondmg']>=15) output("Er würde dir anbieten deine Waffe zu schärfen doch ist sie bereits mächtiger, als sie
jeder seiner Schleifsteine machen könnte");
if ($session['user']['weapondmg']<=14) output("Während eures Gespräches erwähnt er schliesslich, dass er deine Waffe noch
schärfen könnte!`n`0");
$i=0;
do {
$s = $i+1;
if ($s>$session[user][weapondmg]){
if ($session['user']['gold']>=$preis[$i]){ output("`n<a href='weapons.php?op=schleif&id=$i'>Deine Waffe für `^$preis[$i] Goldmünzen`0schärfen, sodass ihre Schadenswertung $s beträgt</a>",true);
}else{ output("`n`7Deine Waffe für `^$preis[$i] Goldmünzen `7schärfen, sodass ihre Schadenswertung $s beträgt"); }addnav("","weapons.php?op=schleif&id=$i");
}
$i++;
} while ($i<15);
addnav("Zurück zur Schmiede","weapons.php");
}
if ($_GET[op]=="schleif"){
$s = $_GET[id]+1;
output("`^Thorgas`7 nimmt dein `5".$session[user][weapon]."`7 und macht sich sogleich daran es zu schleifen
um seine Schadenswertung auf $s zu erhöhen. ");
$session[user][gold]-=$preis[$_GET[id]];
$session[user][attack]-=$session[user][weapondmg];
$session[user][weapondmg] = $s;
$session[user][attack]+=$session[user][weapondmg];
$session[user][weaponvalue] = $preis[$_GET[id]];
addnav("Zurück zum Dorf","village.php");
}
Öffne bio.php
Suche
$result = db_query("SELECT login,name[..]
Füge irgendwo dazu
,waffe,weapon
output("`^Spezialgebiet: `@".$specialty[$row[specialty]]."`n")
füge darunter ein:
if ($row['waffe']!=false) output("`^Waffe: `@$row[weapon] `n");
dragon.php
Suche (2x)
,"name"=>1
füge darunter ein:
,"waffe"=>1
,"drachenerz"=>1
,"weapon"=>1
Suche:
if ($badguy['diddamage'] != 1) $flawless = 1;
$badguy=array();
$session[user][badguy]="";
Füge darunter ein:
$waf = Fists; #Variable eurer Startwaffe anpassen
if ($session[user][waffe]<=0) $session[user][weapon] = $waf;
Optional:
Kleine Anzeige in der VitalInfo um zu zeigen, wie gut die Waffe aktuell ist - praktisch, da der Name bei der eigenen Waffe stets gleich bleibt
öffne common.php
Suche:
.templatereplace("statrow",array("title"=>"Waffe","value"=>$u['weapon']))
Füge darunter ein: .templatereplace("statrow",array("title"=>"Waffenstufe","value"=>$u['weapondmg']))')
Das war hoffentlich alles - Falls etwas nicht klappen sollte dann meldet euch einfach zurück. Achja, womit ich unzufrieden bin:
Die Preissache in der weapons.php, allerdings hat mir eval(); irgendwie den Dienst versagt *grummelt* deshalb diese etwas textintensivere Umschreibung.
Ach, was vergessen - die Texte weichen leider ein wenig vom Standardlogd ab, zur Not einfach einmal den Editor öffnen, die Ersetzenfunktion starten und mit
Suche nach: `^Thorgas
Ersetzen durch: `!MightyE
drüberjagen
In diesem Sinne,
Setsna