anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Freibier https://anpera.dyndns.org/phpbb3/viewtopic.php?f=43&t=238 |
Seite 1 von 1 |
Autor: | anpera [ Sa 15 Nov, 2003 03:35 ] |
Betreff des Beitrags: | Freibier |
English translation available >here<. Beschreibung: Dieser Hack erlaubt es den Spielern eine "Runde zu schmeissen", also anderen Spielern Ale zu spendieren. Dabei gibt ein User die Menge an Ale an und bezahlt. Die nachfolgenden Spieler können sich dann kostenlos bedienen, bis der bezahlte Vorrat aufgebraucht ist. Autor: anpera ( logd@anpera.de ) Version: 1.1 Für LoGD Version: 0.9.7+jt Einbauanleitung:$this->bbcode_second_pass_code('', '----- sql: ALTER TABLE `accounts` ADD `gotfreeale` TINYINT(1) DEFAULT '0' NOT NULL ; ----- Öffne: configuration.php ----- Finde: "gameadminemail"=>"Admin Email", ----- Füge danach ein: "paidales"=>"Ale das als 'Runde' spendiert wurde (Wert-1),int", ----- Öffne: inn.php ----- Finde: $alecost = $session[user][level]*10; ----- Ersetze es durch: if (getsetting("paidales",0)<=1 || $session[user][gotfreeale]==1) { $alecost = $session[user][level]*10; } else { $alecost = 0; } ----- Finde: addnav("Ale (`^$alecost`0 Gold)","inn.php?op=bartender&act=ale"); ----- Ersetze es durch: if (getsetting("paidales",0)<=1) { addnav("Ale (`^$alecost`0 Gold)","inn.php?op=bartender&act=ale"); addnav("Runde schmeissen","inn.php?op=bartender&act=schmeiss"); } else { $amt=getsetting("paidales",0)-1; addnav("Ale (`^".($session[user][gotfreeale]?"$alecost`0 Gold":"schon bezahlt`0").")","inn.php?op=bartender&act=ale"); output("`nEs stehen noch $amt frisch gefüllte und schon bezahlte Krüge mit Ale vor Cedrik."); if ($session[user][gotfreeale]==1) output(" Leider hattest du dein Frei-Ale für heute schon und du wirst selbst bezahlen müssen."); } ----- Finde: }else if ($HTTP_GET_VARS[act]=="bribe"){ ----- Füge davor ein: }else if ($HTTP_GET_VARS[act]=="schmeiss"){ output("Du bist guter Laune und überlegst dir, ob du für deine Kumpels hier in der Kneipe ne Runde Ale spendieren solltest.`n"); output("`n1 Ale kostet dich `^$alecost`0 Gold.`n"); output("<form action='inn.php?op=bartender&act=schmeiss2' method='POST'>Die nächsten <input name='runden' id='runden' width='4'> Ale gehen auf deine Rechnung.`n",true); output("<input type='submit' class='button' value='Ausgeben'></form>",true); output("<script language='javascript'>document.getElementById('runden').focus();</script>",true); addnav("","inn.php?op=bartender&act=schmeiss2"); }else if ($HTTP_GET_VARS[act]=="schmeiss2"){ $amt = abs((int)$_POST['runden']); $jamjam=$amt*$alecost; $schussel=$session[user][name]; if ($session[user][gold]<$jamjam){ output("Du stellst gerade noch rechtzeitig vor einer Blamage fest, dass du nicht genug Gold dabei hast."); } else if (getsetting("paidales",0)>1 || $alecost==0){ output("Tja, der gute Wille war da, doch ein anderer war schneller als du! Enttäuscht bewegst du dich Richtung Freiale und schwörst dir, in Zukunft schneller zu sein."); }else{ output("Du sprichst mit Barkeeper Cedrik und schiebst ihm `^$jamjam`0 Gold rüber. Dieser nickt mit dem Kopf und grölt in die Runde \"`%Die nächsten $amt Ale gehen auf $schussel !!`0\"."); output("Ein allgemeiner Freudenschrei ist die Antwort und du bist der Held der Stunde.`n`n"); if ($amt>3){ output("`^Du erhältst einen Charmpunkt!`0"); $session[user][charm]+=1; } savesetting("paidales",$amt+1); $session[user][gold]-=$jamjam; $sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'inn',".$session[user][acctid].",\"/me spendiert die nächsten $amt Ale!\")"; db_query($sql) or die(db_error(LINK)); } ----- Finde: $session[user][gold]-=$alecost; ----- Füge danach ein: if (getsetting("paidales",0)>1 && $session[user][gotfreeale]==0) { savesetting("paidales",getsetting("paidales",0)-1); $session[user][gotfreeale]=1; } ----- Öffne: newday.php ----- Finde: $session['user']['usedouthouse'] = 0; ----- Füge danach ein: $session['user']['gotfreeale'] = 0; ----- Öffne: user.php ----- Finde: "charm"=>"Charme,int", ----- Füge danach ein: "gotfreeale"=>"Frei-Ale getrunken,bool", ----- Alle Dateien speichern und schliessen') Bemerkung: Die Änderungen in configuration.php dienen nur der Bequemlichkeit. Der Wert 1 bedeutet, dass kein kostenloses Ale mehr vorrätig ist. Dateien: modifizierte configuration.php (Source) modifizierte inn.php (Source) modifizierte newday.php (Source) modifizierte user.php (Source) |
Autor: | anpera [ So 07 Dez, 2003 07:02 ] |
Betreff des Beitrags: | |
Schwachstelle beseitigt. (Es war durch einen Trick möglich, ohne zu bezahlen beliebig viel Ale zu spendieren.) Der Code oben wurde ergänzt. Um den Fehler auszubessern, bitte folgendermaßen vorgehen: $this->bbcode_second_pass_code('', '----- In der modifizierten inn.php: ----- Finde: output("Du stellst gerade noch rechtzeitig vor einer Blamage fest, dass du nicht genug Gold dabei hast."); ----- Füge danach ein: } else if (getsetting("paidales",0)>1 || $alecost==0){ output("Tja, der gute Wille war da, doch ein anderer war schneller als du! Enttäuscht bewegst du dich Richtung Freiale und schwörst dir, in Zukunft schneller zu sein.");') |
Autor: | anpera [ Di 09 Dez, 2003 05:43 ] |
Betreff des Beitrags: | |
Die Einbauanleitung wurde entsprechend den Voraussetzungen für den Einbau in die nächste offizielle LoGD Version geändert. Es kann nur noch 1 Freibier pro Tag getrunken werden, jedes weitere wird normal bezahlt. Für alle, die das schon eingebaut haben hier die Änderungen: $this->bbcode_second_pass_code('', '----- sql: ALTER TABLE `accounts` ADD `gotfreeale` TINYINT(1) DEFAULT '0' NOT NULL ; ----- Öffne: newday.php ----- Finde: $session['user']['usedouthouse'] = 0; ----- Füge danach ein: $session['user']['gotfreeale'] = 0; ----- Öffne: inn.php ----- Finde: if (getsetting("paidales",0)<=1) { $alecost = $session[user][level]*10; ----- Ersetze es durch: if (getsetting("paidales",0)<=1 || $session[user][gotfreeale]==1) { $alecost = $session[user][level]*10; ----- Finde: addnav("Ale (`^schon bezahlt`0)","inn.php?op=bartender&act=ale"); output("`nEs stehen noch $amt frisch gefüllte und schon bezahlte Krüge mit Ale vor Cedrik."); } ----- Ersetze es durch: addnav("Ale (`^".($session[user][gotfreeale]?"$alecost`0 Gold":"schon bezahlt`0").")","inn.php?op=bartender&act=ale"); output("`nEs stehen noch $amt frisch gefüllte und schon bezahlte Krüge mit Ale vor Cedrik."); if ($session[user][gotfreeale]==1) output(" Leider hattest du dein Frei-Ale für heute schon und du wirst selbst bezahlen müssen."); ----- Finde: }else if (getsetting("paidales",0)>1 && ($session[user][drunkenness]==33 || $session[user][drunkenness]==66)){ output(", aber Cedrik fährt unbekümmert damit fort, das Glas weiter zu polieren, an dem er gerade arbeitet. \"`%Du hattest dein Ale. Lass noch was für andere übrig ".($session[user][sex]?"Mädl":"Bursche").".`0\" "); ----- Lösche es ----- Finde: if (getsetting("paidales",0)>1) savesetting("paidales",getsetting("paidales",0)-1); ----- Ersetze es durch: if (getsetting("paidales",0)>1 && $session[user][gotfreeale]==0) { savesetting("paidales",getsetting("paidales",0)-1); $session[user][gotfreeale]=1; } ----- Öffne: user.php ----- Finde: "charm"=>"Charme,int", ----- Füge danach ein: "gotfreeale"=>"Frei-Ale getrunken,bool", ----- Alle Dateien speichern und schliessen') |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |