Файл: 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>");
}
?>