LoGD Standardrelease steht hier zum Download zur Verfügung!
<?php
require_once "common.php";
page_header("Multilogs");
addnav("G?Zurück zur Grotte","superuser.php");
addnav("W?Zurück zum Weltlichen","village.php");
if(isset($_GET['id'])){
addnav("Zurück zu den Logs","logs.php");
addnav("Zurück zu den Multis","logs.php?op=multi&searchby=id");
$sql = "SELECT acctid,name,lastip,uniqueid,dragonkills,level FROM accounts
WHERE uniqueid ='".$_GET['id']."' AND locked='0'
ORDER BY dragonkills ASC, level ASC";
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$userlist[$row['acctid']] = $row;
}
$in_acctid = '';
$i = count($userlist);
output("`n`n`Q$i Characters mit ID: ".$_GET['id']."`0`n");
output("<table border=0 cellpadding=2 cellspacing=1 >",true);
output("<tr class='input'><td>Spieler/in</td><td>letzte IP</td><td>Drachen</td><td>Level</td>",true);
foreach ($userlist AS $member) {
output("<tr class='trmain'>",true);
output("<td>".$member['name']."`0</td><td>".$member['lastip']."</td><td align='center'>"
.$member['dragonkills']."</td><td align='center'>".$member['level']."</td>",true);
$in_acctid .= ','.$member['acctid'];
output("</tr>",true);
}
output("</table>",true);
// -> debuglog
$sql = 'SELECT date,actor,target,debuglog.message,a1.name as actorname,a2.name as targetname
FROM debuglog LEFT JOIN accounts as a1 ON a1.acctid=debuglog.actor
LEFT JOIN accounts as a2 ON a2.acctid=debuglog.target
WHERE actor IN (-1'.$in_acctid.')
AND target IN (-1'.$in_acctid.')
AND DATE_ADD(date, INTERVAL 1 MONTH) >= NOW()
ORDER BY date DESC, actor ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) == 0) {
output("`^Debuglog:`0`n Keine Interaktion. `@Guuuuuut.`0`n");
} else {
output("`^Debuglog:`0`n Die folgenden Interaktionen wurden gefunden:`n");
while ($row = db_fetch_assoc($result)) {
output("`$ Log:`0 ".$row['date']." - ".$row['actorname']."`0 ".$row['message'].
" ".$row['targetname']."`0`n" );
}
}
// Hauscheater!
$sql = 'SELECT h.houseid, h.housename, a.name, h.owner FROM items i LEFT JOIN houses h ON h.houseid=i.value1 LEFT JOIN accounts a ON a.acctid=h.owner WHERE i.class="Schlüssel" AND i.owner IN (-1'.$in_acctid.') AND i.owner!=h.owner GROUP BY i.value1 HAVING COUNT(*) > 1 OR owner IN (-1'.$in_acctid.')';
$result = db_query($sql);
if (db_num_rows($result)>0) {
output("`n`^Häuser:`0`n");
$houses = array();
$in_houses = '';
// Häuser speichern
while ($row = db_fetch_assoc($result)) {
$row['inhouse'] = '';
$houses[$row['houseid']] = $row;
$in_houses .= ','.$row['houseid'];
}
db_free_result($result);
// Betroffene Bewohner rausfinden
$sql = 'SELECT value1,owner FROM items WHERE class="Schlüssel" AND owner IN (-1'.$in_acctid.') AND value1 IN (-1'.$in_houses.')';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
if ($row['owner']==$houses[$row['value1']]['owner']) continue;
$houses[$row['value1']]['inhouse'] .= '--- Schlüssel im Besitz von '.$userlist[$row['owner']]['name'].'`0`n';
}
db_free_result($result);
foreach ($houses AS $house) {
output("`$ Vergehen:`0 Hausbesitzer von {$house['housename']}`0 (Nr. {$house['houseid']}) ist ".$house['name'].'`0`n'.$house['inhouse']);
}
}
} else {
addnav("Zurück zu den Logs","logs.php");
addnav("Zurück zu den Multis","logs.php?op=multi");
$ip = $users = $usergroup = array();
$in_ids = '';
$sql = 'SELECT uniqueid FROM accounts WHERE uniqueid!="" AND locked="0" GROUP BY uniqueid HAVING COUNT(*) > 1';
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$in_ids .= ',"'.$row['uniqueid'].'"';
$usergroup[$row['uniqueid']] = array('users'=>array(),
'houses'=>array(),
'in_acctid'=>'',
'in_houses'=>'',
'debuglog'=>'');
}
db_free_result($result);
if ($in_ids!='') {
$idlist = array();
$sql = 'SELECT acctid, name, lastip, uniqueid, dragonkills, level FROM accounts
WHERE uniqueid IN ("X"'.$in_ids.') AND locked="0"
ORDER BY dragonkills ASC, level ASC';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
$usergroup[$row['uniqueid']]['users'][$row['acctid']] = $row;
$usergroup[$row['uniqueid']]['in_acctid'] .= ','.$row['acctid'];
$idlist[$row['acctid']] = $row['uniqueid'];
}
db_free_result($result);
// -> debuglog
$sql = 'SELECT date,actor,target,debuglog.message,a1.name as actorname,a2.name as targetname,a1.uniqueid
FROM accounts a1 LEFT JOIN accounts a2 ON a1.uniqueid=a2.uniqueid
LEFT JOIN debuglog ON actor=a1.acctid AND target=a2.acctid
WHERE a1.acctid IN ('.implode(',',array_keys($idlist)).')
AND a2.acctid IS NOT NULL
AND debuglog.id IS NOT NULL
AND DATE_ADD(date, INTERVAL 1 MONTH) >= NOW()
ORDER BY date DESC, actor ASC';
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result) > 0) {
while ($row = db_fetch_assoc($result)) {
$usergroup[$row['uniqueid']]['debuglog'] .=
"`$ Log:`0 ".$row['date']." - ".$row['actorname']."`0 ".$row['message']." ".$row['targetname']."`0`n" ;
}
}
db_free_result($result);
// Hauscheater!
// Erstmal alle Schlüssel finden, die die Multis haben
$houseids = array();
$sql = 'SELECT items.value1, items.owner AS keyowner, houses.owner AS houseowner FROM items LEFT JOIN houses ON houses.houseid=items.value1 WHERE items.owner!=houses.owner AND items.class="Schlüssel" AND items.owner IN (-1,'.implode(',',array_keys($idlist)).')';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
if (isset($idlist[$row['houseowner']]) && !isset($usergroup[$idlist[$row['houseowner']]]['houses'][$row['value1']])){
$usergroup[$idlist[$row['houseowner']]]['houses'][$row['value1']] = 1;
}
if ($row['houseowner']==$row['keyowner']) continue;
if (!isset($usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']])){
$usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']] = 1;
}
else {
$usergroup[$idlist[$row['keyowner']]]['houses'][$row['value1']]++;
if (!in_array($row['value1'],$houseids)) $houseids[] = $row['value1'];
}
}
db_free_result($result);
// Häuser raussuchen, wo mehr als ein Spieler einer Multigruppe drinsitzt und beides in Zusammenhang bringen
$in_houses = '';
foreach ($usergroup AS $grid=>$thisgroup) {
$tmpstr = '';
foreach ($thisgroup['houses'] AS $houseid=>$thishouse) {
if ($thishouse > 1) {
$tmpstr .= ','.$houseid;
}
}
if ($tmpstr!='') {
$in_houses .= ' OR (owner IN (-1'.$thisgroup['in_acctid'].') AND value1 IN (-1'.$tmpstr.'))';
}
$usergroup[$grid]['houses'] = array();
}
if (count($houseids)>0) {
// Alle Häuserdaten zu betroffenen Häusern holen
$housedata = array();
$sql = 'SELECT h.houseid, h.housename, a.name, h.owner FROM houses h LEFT JOIN accounts a ON a.acctid=h.owner WHERE h.houseid IN ('.implode(',',$houseids).')';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
$housedata[$row['houseid']] = $row;
}
db_free_result($result);
}
// Alle als Multivergehen erkannten Schlüssel einlesen
$sql = 'SELECT value1, owner FROM items WHERE class="Schlüssel" AND (0'.$in_houses.')';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
if ($row['owner']==$housedata[$row['value1']]['owner']) continue;
$usergroup[$idlist[$row['owner']]]['houses'][$row['value1']] .= '--- Schlüssel im Besitz von '.$usergroup[$idlist[$row['owner']]]['users'][$row['owner']]['name'].'`0`n';
}
db_free_result($result);
// Nu endlich mal an die Ausgabe...
foreach ($usergroup AS $cookie=>$thisgroup) {
if (count($thisgroup['houses'])==0 && $thisgroup['debuglog']=='') continue;
output("`n`n`Q".count($thisgroup['users'])." Characters mit Cookie: $cookie`0`n");
output("<table border=0 cellpadding=2 cellspacing=1 >",true);
output("<tr class='input'><td>Spieler/in</td><td>letzte IP</td><td>Drachen</td><td>Level</td>",true);
foreach ($thisgroup['users'] AS $member) {
output("<tr class='trmain'>",true);
output("<td>".$member['name']."`0</td><td>".$member['lastip']."</td><td align='center'>"
.$member['dragonkills']."</td><td align='center'>".$member['level']."</td>",true);
output("</tr>",true);
}
output("</table>",true);
if ($thisgroup['debuglog']!='') {
output("`^Debuglog:`0`n Die folgenden Interaktionen wurden gefunden:`n");
output($thisgroup['debuglog']);
}
if (count($thisgroup['houses']>0)) {
output("`n`^Häuser:`0`n");
foreach ($thisgroup['houses'] AS $houseid=>$houseval) {
output("`$ Vergehen:`0 Hausbesitzer von ".$housedata[$houseid]['housename']."`0 (Nr. {$houseid}) ist ".$housedata[$houseid]['name'].'`0`n'.$houseval);
}
}
output("`n`n");
}
}
else output('Keine Multis gefunden!');
}
output("`n");
page_footer();
?>