%PDF- %PDF-
| Direktori : /www/old2/_music/loot/ |
| Current File : /www/old2/_music/loot/loot.php |
<?php
//error_reporting(E_ALL);
include_once("func.php");
$tzac=getmicrotime();
header("Content-type: text/plain");
$spojeni = pg_connect("host=localhost port=5432 dbname=loot user=waritko");
$gameobjects = array();
$res = q("select id, name from gameobject order by id");
foreach($res as $r)
{
$gameobjects[$r[1]] = $r[0];
}
$paths = array("Wowhead_Looter.lua");
$waritko = 0;
$dc = 0;
$what = array();
foreach($paths as $path)
{
$tmp = ParseLuaFile($path);
//print_r($tmp['wlEvent']);
//die;
q("BEGIN");
foreach($tmp['wlEvent'] as $player)
{
foreach($player as $session)
{
foreach($session as $event)
{
if($event['what'] == 'loot')
{
if(!$event['action'])
{
if($levent['action'] != "Fishing") continue;
$levent['drop'] = $event['drop'];
$event = $levent;
}
$waritko++;
// nezbytne upravy
$coin = 0;
$dropcount = 0;
$drop = array();
if($event['drop'])
{
foreach($event['drop'] as $l)
{
list($what, $count) = explode("^", $l);
if($what == 'coin')
{
$coin = $count;
}
else
{
$drop[] = array("what" => $what, "count" => $count);
$dropcount++;
}
}
}
switch($event['action'])
{
case 'Opening':
{
if($event['kind'] == "object") // neco udelat :D
{
if(isset($gameobjects[$event['name']]))
{
$event['id'] = $gameobjects[$event['name']];
}
else
{
q("insert into gameobject(name) values('".str_replace("'", "\\'", $event['name'])."')");
$res = q("SELECT last_value FROM gameobject_id_seq");
$gameobjects[$event['name']] = $res;
$event['id'] = $res;
}
}
q("insert into object(flags, object, kind, dd, money, drops) values(".$event['flags'].", ".$event['id'].", '".$event['kind']."', ".$event['dd'].", $coin, $dropcount)\n");
$res = q("SELECT last_value FROM object_id_seq");
foreach($drop as $d)
{
q("insert into object_loot(loot_id, item_id, item_count) values($res, ".$d['what'].", ".$d["count"].")");
}
break;
}
case 'Killing':
{
q("insert into npc(flags, object, kind, dd, money, drops) values(".$event['flags'].", ".$event['id'].", '".$event['kind']."', ".$event['dd'].", $coin, $dropcount)\n");
$res = q("SELECT last_value FROM npc_id_seq");
foreach($drop as $d)
{
q("insert into npc_loot(loot_id, item_id, item_count) values($res, ".$d['what'].", ".$d["count"].")");
}
break;
}
case 'Skinning':
{
q("insert into skinning(flags, object, kind, dd, money, drops) values(".$event['flags'].", ".$event['id'].", '".$event['kind']."', ".$event['dd'].", $coin, $dropcount)\n");
$res = q("SELECT last_value FROM skinning_id_seq");
foreach($drop as $d)
{
q("insert into skinning_loot(loot_id, item_id, item_count) values($res, ".$d['what'].", ".$d["count"].")");
}
break;
}
case 'Disenchanting':
{
q("insert into disenchanting(flags, object, kind, dd, money, drops) values(".$event['flags'].", ".$event['id'].", '".$event['kind']."', ".$event['dd'].", $coin, $dropcount)\n");
$res = q("SELECT last_value FROM disenchanting_id_seq");
foreach($drop as $d)
{
q("insert into disenchanting_loot(loot_id, item_id, item_count) values($res, ".$d['what'].", ".$d["count"].")");
}
break;
}
default:
{
echo "Neidentifikovany prvek:\n";
print_r($event);
//q("ROLLBACK");
pg_close($spojeni);
die;
}
}
$dc += $dropcount;
//$loot[] = $t;
$levent = $event;
}
}
}
echo "Session added \n";
}
}
q("COMMIT");
pg_close($spojeni);
die;
//print_r($loot);
$config = array(
"char-encoding" => "utf8",
"indent" => true,
"input-xml" => true,
"output-xml" => true
);
$tidy = tidy_parse_string($loot->asXML(), $config, "utf8");
$tidy->cleanRepair();
$txt = (string)$tidy;
$mem = sprintf("%01.2f", memory_get_peak_usage(true)/(1024*2024));
$tkon=getmicrotime();
$time=$tkon-$tzac;
$time = sprintf("%01.4f", $time);
echo "Count: $waritko ($dc items -> ".sprintf("%01.3f",$dc/$waritko)." items/loot)\nMemory: $mem MBytes\nTime: $time seconds";
$fn = time();
file_put_contents("xml/".$fn.".xml", $txt);
$txt = file_get_contents("list.txt");
$txt .= "\n$fn";
file_put_contents("list.txt", $txt);
//file_put_contents("pokus.xml", $txt);
?>