Файл: admin/tools/zones/updatezones.php
Строк: 67
<?php
include_once("../../../settings.php");
include_once("room.php");
function updateZone($file,$db){
//read file
$handle = fopen($file,"rt");
if(!$handle) return false;
$vnums = array();
$exits = array();
$vnum = 0;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
if($buffer[0]=="#"){
//new room
$vnum = substr($buffer,1);
$name_room = fgets($handle, 4096);
$name_room = substr($name_room,0,strlen($name_room)-2);
$description = fgets($handle, 4096);
$description = trim($description);
$vnums[] = array("vnum"=> $vnum,"name" => $name_room,"desc" => $description);
}
//parse exits
if($buffer[0]=="D"){
$direction = floor($buffer[1]);
while($buffer[0]!="0"){
$buffer = fgets($handle, 4096);
}
$arr_dir = explode(" ",$buffer);
//print_r($arr_dir);
$exits[] = array("vnum" => $vnum,"dir" => $direction,"link_room" => $arr_dir[2]);
}
}
//put room in Db
$room = new CRoom($db);
foreach ($vnums as $v)
{
$room->delRoom($v['vnum']);
$room->addRoom($v['vnum'],$v['name'],$v['desc']);
}
foreach ($exits as $v)
{
$room->delRoomDirections($v['vnum']);
}
foreach ($exits as $v)
{
$room->addRoomDirection($v['vnum'],$v['dir'],$v['link_room']);
}
fclose($handle);
return true;
}
$zone_filelist = array("podzemka.wld","berlin.wld","benzokolonka.wld","anatomic_three.wld","clan_darktime.wld");
foreach($zone_filelist as $v){
echo("Updating zone: <b>$v</b><br>");
if(!updateZone($v,$db)){
echo("Error update zone <b>$v</b><br>");
break;
}
echo("Update zone: <b>$v</b> is OK<br>");
}
?>