%PDF- %PDF-
Direktori : /data/bordel/loot/ |
Current File : //data/bordel/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); ?>