anpera.net
https://anpera.homeip.net/phpbb3/

[Sammelthread] LOGD - Tipps & Tricks
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=1887
Seite 1 von 1

Autor:  Devilzimti [ Mo 31 Okt, 2005 23:42 ]
Betreff des Beitrags:  [Sammelthread] LOGD - Tipps & Tricks

Würde mich freuen wenn das Ganze angepinnt wird :D
Also jeder der nen kleinen Kniff zu Logd weiß, soll ihn hier reinposten :D
Ich mach mal den Anfang:

$this->bbcode_second_pass_code('', 'PHPMYADMIN -> SQL
UPDATE `accounts` SET output='', allowednavs='',restorepage=''')

Diesen Codeschnipsel kannst du vor einem Serverumzug ausführen, um die Datenbank zu schrumpfen und so Probleme beim Einspielen auf den neuen Server zu vermeiden.

$this->bbcode_second_pass_code('', 'PHPMYADMIN -> SQL
UPDATE `accounts` SET output=''')

Ist vorallem bei regelmäßigen Backups zu empfehlen.
Auch das schrumpft die Datenbank um so Probleme beim Einspielen auf den Server zu vermeiden.
Kann jedoch auch problemlos im laufenden Spielverlauf benutzt werden.
Achte jedoch darauf, dass beim Zeitpunkt der Benutzung keine Spieler online sind!

Autor:  Kevz [ Di 01 Nov, 2005 09:40 ]
Betreff des Beitrags: 

Badnav Repair für Admin acc ;)


$this->bbcode_second_pass_code('', 'UPDATE `accounts` SET `output` = '', `allowednavs` = '', `restorepage` = '' WHERE `acctid` = 'die id'')
-Hiermit macht man mal schnell den Admin acc wieder Ready.

Autor:  Eliwood [ Di 01 Nov, 2005 17:36 ]
Betreff des Beitrags: 

$this->bbcode_second_pass_code('', 'UPDATE `accounts` SET `output` = '', `allowednavs` = '', `restorepage` = '' WHERE `login` = '{loginname}'')

Selbes Prinzip wie oben, repariert Navs, nur muss man da anstatt die ID einfach nur den Loginnamen eingeben :)

Autor:  Devilzimti [ Di 01 Nov, 2005 19:10 ]
Betreff des Beitrags: 

Was tun, wenn nach der Installation nur seltsame Zeiche angezeigt werden?

$this->bbcode_second_pass_code('', 'Beispiel für die "seltsamen Zeichen":

ÑxNÓÉ-θ\ØüJ3iv¨2¹JiP^P»¹ÚÆ1<t;Bç½]wüøñÏ(˜íÚ#Àå““>*(ÑxNÓÉ-θ\ØüJ3iv¨2¹JiP^P»¹ÚÆ1<t;Bç½]wüøñÏ(˜íÚ#Àå““>*(ÑxNÓÉ-θ\ØüJ3iv¨2¹JiP^P»¹ÚÆ1<t;Bç½]wüøñÏ(˜íÚ#Àå““>*')

[php]Von anpera:
### Öffne: common.php

### Finde:
echo compress_out($output);
// echo $output;

### Ersetze es durch:
// echo compress_out($output);
echo $output;[/php]

Das sollte helfen :wink:

Autor:  Auric [ Mo 09 Jan, 2006 21:44 ]
Betreff des Beitrags: 

So, von mit auch noch mal ne Kleinigkeit, die sich nicht als "Mod" zu posten lohnt: Für alle, die die dauernden abfragen bezüglich des partners des Helden statt sind:
[php]function lover($wert="*",$player=false) {
//Erster Parameter ist einString mit den abzufragenden Feldern - wie in MySQL
//Zweiter Parameter bestimmt, ob es sich um den aktuellen User handelt, oder einen andern - ID ANGEBEN!!!
global $session;
if($session[user][marriedto]==0 || $session[user][marriedto]==4294967295) {
return false;
} else {
if($player==false) {
$sql="SELECT `{$wert}` FROM `accounts` WHERE `acctid` = {$session[user][marriedto]} LIMIT 1";
} else {
$sql="SELECT `{$wert}` FROM `accounts` WHERE `acctid` = {$player} LIMIT 1";
}
$lover=db_fetch_assoc(db_query($sql));
if($lover) {
return $lover;
} else {
return false;
}
}
}
/* Lover-Abfrage by Auric ENDE */[/php]

Einfach in die common.php damit und fertig!

[edit:]So, Auf Eli's Idee hin noch einmal erneuert - ich hoffe das funzt so^^

Autor:  Eliwood [ Mo 09 Jan, 2006 21:54 ]
Betreff des Beitrags: 

@ Auric:
Einen Fall in der Funktion wär vielleicht noch nett, falls kein Ergebnis gefunden wird (Account verschwunden o.ä.) dass dann ebenfalls false zurück dringt :)

Hab da auch was...
Für die, welche die alte showform leid sind...

Hat neu: Reiter, und nur noch div-Tags ^^
(PS: Nein, alles eigener Code, nichts aus der neuen Version. Kann gerne überprüft werden, mein JS ist schlanker :P )

[php]function showform($layout,$row,$nosave = false)
{
global $output;
$js = '
<script language="JavaScript">
var setting = 0;
function show(setting)
{
if (document.getElementById
&& document.getElementById(setting).style.visibility == "hidden")
{
document.getElementById(setting).style.visibility = "visible";
document.getElementById(setting).style.display = "inline";
document.getElementById("link_"+setting).style.color = "#FFFF00";
document.getElementById("link_"+setting).style.background = "#550000";
}
else
{
document.getElementById(setting).style.visibility = "hidden";
document.getElementById(setting).style.display = "none";
document.getElementById("link_"+setting).style.color = "#0099FF";
document.getElementById("link_"+setting).style.background = "#303030";
}
}

function hidden()
{
for(var x = 1; x <{count}; x++)
{
var elements = document.getElementById(x);
elements.style.visibility = "hidden";
elements.style.display = "none";
document.getElementById("link_"+x).style.color = "#0099FF";
document.getElementById("link_"+x).style.background = "#303030";
}
}

function set_setting(setting)
{
hidden();
show(setting);
}
</script>';
// $reiter = "<table cellpadding='0' cellspacing='0' border='0'><tr>";
$countt = 1;
while(list($key,$val)=each($layout))
{
$info = split(",",$val);
if ($info[1]=="title")
{
if($countt > 1) $table.="</div>";
$table.="<div id='$countt' style='"
.($countt>1?"visibility: hidden; display: none;":"visibility: visible; display: inline;")
."'>";
$table.="<div style=' background: #666666;'>";
$table.=appoencode("`b`^$info[0]`0`b");
$reiter.="<div id='link_".$countt."' onClick=\"javascript:set_setting('".$countt."')\" style='float: left; cursor: pointer; padding: 5px; border: 1px solid #000000; color: ".($countt>1?"#0099FF":"#FFFF00")."; background: ".($countt>1?"#303030":"#550000").";'>";
$reiter.='&nbsp;'.$info[0].'&nbsp;';
$reiter.='</div>';
$countt++;
}
else
{
$table.="<div style='float: left; clear: both; text-align: left;'>";
$table.=appoencode("$info[0]");
$table.="</div> <div style='text-align: right;'>";
}
switch($info[1])
{
case "title":
break;

case "textarea":
$table.="<textarea name='$key' class='input' cols='$info[2]' rows='$info[3]'>".HTMLEntities($row[$key])."</textarea>";
break;
case 'file':
$table .= "<input name='$key' type='file'>";
break;
case "enum":
reset($info);
list($k,$v)=each($info);
list($k,$v)=each($info);
$table.="<select name='$key'>";
while (list($k,$v)=each($info)){
$optval = $v;
list($k,$v)=each($info);
$optdis = $v;
$table.="<option value='$optval'".($row[$key]==$optval?" selected":"").">".HTMLEntities("$optval : $optdis")."</option>";
}
$table.="</select>";
break;
case "select":
reset($info);
list($k,$v)=each($info);
list($k,$v)=each($info);
$table.="<select name='$key'>";
while (list($k,$v)=each($info)){
$optval = $v;
list($k,$v)=each($info);
$optdis = $v;
$table.="<option value='$optval'".($row[$key]==$optval?" selected":"").">".HTMLEntities("$optdis")."</option>";
}
$table.="</select>";
break;
case "password":
$table.="<input type='password' name='$key' value='".HTMLEntities($row[$key])."'>";
break;
case "bool":
$table.="<select name='$key'>";
$table.="<option value='0'".($row[$key]==0?" selected":"").">Nein</option>";
$table.="<option value='1'".($row[$key]==1?" selected":"").">Ja</option>";
$table.="</select>";
break;
case "hidden":
$table.="<input type='hidden' name='$key' value=\"".HTMLEntities($row[$key])."\">".HTMLEntities($row[$key]);
break;
case "viewonly":
$table.= dump_item($row[$key]);
break;
case "int":
$table.="<input name='$key' value=\"".HTMLEntities($row[$key])."\" size='5'>";
break;
default:
$table.=("<input size='50' name='$key' value=\"".HTMLEntities($row[$key])."\">");
}
$table.="</div>";
}
// $table.="</div>";
$reiter.="<div style='clear: both;'></div>";
$table = str_replace("{count}",$countt,$js).$table;
$table = str_replace("><",">\n<",$table);
$reiter = str_replace("><",">\n<",$reiter);
if ($nosave==false) $table.="<input type='submit' class='button' value='Speichern'>";
rawoutput($reiter.$table);
}[/php]

Autor:  Eliwood [ So 07 Mai, 2006 15:26 ]
Betreff des Beitrags: 

Jo, wieder was aus Pherae *g*
2 Funktionen.
Die erste, randname, holt einen Zufälligen Namen aus der Datenbank. Wahlweise kann das gewünschte Geschlecht (0 oder 1) oder ob auch die Accountid zurück gegeben werden soll für weitere Bearbeitung (Yom an en Entsprechenden oder so).

[php]function randname($sex = false,$returnid = false)
{
// 2006 by Eliwood
// @param1: Gewünschtes Geschlecht, false wenn egal
// @param2: ID mit zurück geben (Achtung, Array!)
if($sex === false)
$sql = "SELECT `name`,`acctid` FROM accounts WHERE locked=0 ORDER BY rand(".e_rand().") LIMIT 1";
else
$sql = "SELECT `name`,`acctid` FROM accounts WHERE locked=0 AND sex='".$sex."' ORDER BY rand(".e_rand().") LIMIT 1";

$row = db_fetch_assoc(db_query($sql));

if($returnid === false) return $row['name'];
else return array('acctid' => $row['acctid'], 'name' => $row['name']);
}[/php]

Die 2te Funktion ist was für faule. "YeOldeMail()" kreiert den Link um zum Parameter "login" eine YOM verschicken zu können. Wenn der Zweite Parameter nicht angegeben wird ist die Funktion "void", gibt also selbst was aus. Wenn der Parameter auf "true" ist wird hingegen der Link zurück gegeben und kann in anderen Funktionen weiter verwendet werden.

[php]function yeoldemail($login,$return = false)
{
// 2006 by Eliwood
// @param1: Loginname, benötigt
// @param2: Wenn zurück gegeben werden soll auf "true" stellen
$ausgabe = '<a href="mail.php?op=write&to='.$login.'" target="_blank" onClick="'
.popup("mail.php?op=write&to=".$login)
.';return false;\">'
.'<img src="images/newscroll.GIF" width="16" height="16" alt="Mail schreiben" border="0" />'
.'</a> ';

if($return === false) rawoutput($ausgabe);
else return $ausgabe;
}[/php]

Autor:  Montekar [ Do 01 Jun, 2006 08:12 ]
Betreff des Beitrags: 

Statt

[php]output("Du wanderst gerade durch den Wald, als du auf einmal");
output(" Hilfeschreie hörst. Du beschließt...");[/php]

Schreib einfach

[php]output("Du wanderst gerade durch den Wald, als du auf einmal Hilfeschreie hörst. Du beschließt...");[/php]

Also nicht immer wiedert output schreiben!

Autor:  Kevz [ Do 01 Jun, 2006 14:40 ]
Betreff des Beitrags: 

Schreib es doch gleich in '... :nene:

Autor:  Eliwood [ Sa 15 Jul, 2006 15:30 ]
Betreff des Beitrags:  grafbar2()

[php]function grafbar2($max,$val,$height = 5, $width = 30,$bgcolor = '#000000',$color1 = '#009900', $color2 = '#00FF00', $color3 = '#FFFF00', $color4 = '#FF0000') {
/*
grafbar - version 1.0, 2006-07-15
Copyright (C) 2006 Basilius

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
$div1w = $width/$max*$val;
$div2w = $width-$div1w;

$percent = round((100/$max)*$val);

if($val >= $max) {
$color = $color1;
}
elseif($percent >= 50) {
$color = $color2;
}
elseif($percent >= 10) {
$color = $color3;
}
else {
$color = $color4;
}

$b = '<div style="height: '.$height.'px; width: '.$width.'px; border: 1px solid black; background-color: '.$bgcolor.'">'
.'<div style="width: '.$div1w.'px; height: 5px; background-color: '.$color.'">&nbsp;</div>'
.'<div style="width: '.$div2w.'px; height: 5px;">&nbsp;</div>'
.'</div>';
return $b;
}[/php]

Wie wird es eingesetzt?
Wie grafbar. Nur können zusätzliche Parameter wie $bgcolor, $color1 - $color4 eingesetzt werden, die den Balken nach eigenen Wünsche und ohne Eingriffe in die Funktion ändern. Ebenso wurde von einer Tabelle anbesehen, sondern es werden divs Genommen.

Beispiel:

[php]grafbar2($data['maxendurance'],$data['endurance'],5,100,'#000000','#FFFF00','#FF9900','#FF6600')[/php]

Autor:  Eliwood [ Do 20 Jul, 2006 18:45 ]
Betreff des Beitrags: 

Und das gleiche nochmal, diesmal grafbar als Grafik:

[php]function color2rgb($color) {
if(strlen($color) > 7) {
return false;
}
else {
if(substr($color,0,1) === '#') {
$color = substr($color,1);
}

if(strlen($color) === 3) {
$red = substr($color,0,1);
$green = substr($color,1,1);
$blue = substr($color,2,1);

$red .= $red;
$green .= $green;
$blue .= $blue;

}
elseif(strlen($color) === 6) {
$red = substr($color,0,2);
$green = substr($color,2,2);
$blue = substr($color,4,2);
}
else {
return false;
}
return array(
0 => hexdec($red),
1 => hexdec($green),
2 => hexdec($blue),
);
}
}

function grafbar_gif($max,$val,$height = 5, $width = 30,$bgcolor = '#000000',$color1 = '#009900', $color2 = '#00FF00', $color3 = '#FFFF00', $color4 = '#FF0000') {

$percent = round((100/$max)*$val);

if($val >= $max) {
$color = color2rgb($color1);
}
elseif($percent >= 50) {
$color = color2rgb($color2);
}
elseif($percent >= 10) {
$color = color2rgb($color3);
}
else {
$color = color2rgb($color4);
}

// Bild erstellen
$im = ImageCreate($width,$height);

// Farben
$bgcolor = color2rgb($bgcolor);

$color = ImageColorAllocate($im,$color[0],$color[1],$color[2]);
$bgcolor = ImageColorAllocate($im,$bgcolor[0],$bgcolor[1],$bgcolor[2]);

// Balken erstellen
$bar1_start = 0;
$bar1_end = round($width/$max*$val);
$bar2_start = $bar1_end+1;
$bar2_end = $width;

ImageFilledRectangle ($im, $bar1_start, 0, $bar1_end, $height, $color); // Gefülllt
ImageFilledRectangle ($im, $bar2_start, 0, $bar2_end, $height, $bgcolor); // Leer

return $im;
}[/php]

Anwendung:

[php]header('content-type: image/gif');
ImageGIF (grafbar_gif(100,40,20,200)); [/php]

Autor:  toXic [ Do 07 Sep, 2006 20:41 ]
Betreff des Beitrags: 

hi
mein erster Beitrag hier ^^
Ich werde etwas posten, was mich beschäftigt hat und worauf ich zunächst keine Hilfe fand. Mittlerweile bin ich selber darauf gekommen ...

Daher ein Tipp und zugleich eine Frage.

Tipp:
Tables im Output Bereich
Wenn jemand den TExt nicht einfach nur untereinander geschrieben dargestellt bekommen möchte und ihn außerdem in sichtbaren Tabellen anzeigen möchte, müsste er theoretisch mit dem output arbeiten. Das habe ich auch versucht. Zunächst mit folgendem Codeschnipsel:

[php]
//Falsch
output("<table><tr><td>`@`c`bDorfplatz`b`c</td></tr></table>");
[/php]

Dies sollte eigentlich das Wort Dorfplatz in einer Tabelle ausgeben. Tat es aber nicht. Anstelle dessen bekam ich eine wortgetreue Wiedergabe auf dem Bildschirm präseniert.
Also habe ich mir den code genauer angesehen und das Wörtchen "true" entdeckt. Ich probierte es erneut


[php]
//Richtig
output("<table><tr><td>`@`c`bDorfplatz`b`c</td></tr></table>",true);
[/php]

und tada, es ging.

Frage:
Warum? Also, was genau bewirkt das Wörtchen "true" in diesem Fall? Was sagt es dem Programm? Sagt es sowas aus wie: Verwendung von html code erlaubt?

Würde mich über eine kleine Lehrstunde (oder Minute) freuen.
Ich weiß zwar jetzt wie es geht, aber nicht warum ;)
Und ich lerne gern dazu.

Mit freundlichem Gruß
toXic

Autor:  Eliwood [ Do 07 Sep, 2006 20:52 ]
Betreff des Beitrags: 

Ja, true erlaubt HTML.

Aber: Vergiss *bitte* die Tabellen überall, wo du keine Tabellarischen Inhalte darstellen willst. BITTE!

Autor:  Kamui [ Do 21 Sep, 2006 11:55 ]
Betreff des Beitrags: 

Ich habe auch mal ein ganz kleinen wo man kein hph oder SQL benutzen muss um sich aus dem Badnav zu befreien man muss einfach in der Addressleiste des Browsers das was am ende der addresse seht also das badnav.php gegen index.php ersetzten so erscheint dann ganz oben auf der seite der rettungsnav zum dorf so das wars schon ^^

Autor:  Eliwood [ Di 22 Mai, 2007 19:53 ]
Betreff des Beitrags:  MySQL 5 und varchar()

MySQL 5.x und varchar()

Intressante Informationen:
MySQL ab Version 5.x unterstützt weitaus MEHR Zeichen als nur 255 im spaltentyp "varchar" - auf meinem lokalen PC bis zu 64531 Zeichen (latin1_general_ci). Das macht vor allem das Zeugs für die Kommentare intressant. :)

Referenzhandbuch MySQL 5.1 hat geschrieben:
Werte in VARCHAR-Spalten sind Strings variabler Länge. Diese kann zwischen 0 und 65.535 liegen. (Die effektive Maximallänge einer VARCHAR-Spalte wird durch die maximale Datensatzgröße und den verwendeten Zeichensatz bestimmt. Die gesamte Maximallänge liegt bei 65.532Byte.)


Achtung: Char betrifft das nicht!

Autor:  Nightborn [ Di 22 Mai, 2007 20:32 ]
Betreff des Beitrags: 

Guter Hinweis.... ;)

Autor:  halfen [ So 12 Aug, 2007 21:08 ]
Betreff des Beitrags: 

hmm lol.. was sooll man sagen.. nice^^

Autor:  Sakuya [ Fr 05 Okt, 2007 18:53 ]
Betreff des Beitrags: 

Hallo,

Ich bin neu hir und wollt mal was fragen. Ich möchte mir eine eigen lotgd server machen. Und bräuchte dabei hilfe, bzw. der wir erklärt welchen link ich brauche um mir den server zu erstellen

Autor:  Arath [ Fr 05 Okt, 2007 19:29 ]
Betreff des Beitrags: 

Also das erste was du brauchst um einen LotGD Server zu eröffnen ist Ahnung im Ungang mit PHP & geringfügig auch HTML.

Dann brauchst du Webspace der PHP und MySQL unterstützt, sollte gemietet werden bei Hostloco, Hosteurope und wie sie alle heißen. Kostenloser Webspace wie bei Funpic sind sehr sehr sehr ungünstig und bei Funpic z.B. auch verboten.
Evtl. noch nen Testserver, was nur zu empfehlen ist, am besten XAMPP lokal auf dem heimischen Computer.

Und dann natürlich noch das Spiel, was du dir hier downloaden kannst.

Ausführliches zu dem ganzen Kram findest du per Suchfunktion im Forum.

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