Файл: include/zone.php
Строк: 138
<?php
include_once("table_name.php");
include_once("base.php");
include_once("creature.php");
/**
class zone players
*/
class CZone extends CBase
{
var $mob_state;
/**
Constructor
*/
function CZone($database,$vnum=0)
{
global $table_room;
$this->db = $database;
$this->table_name=$table_room;
$this->vnum =$vnum;
$this->mob_state = new CCreature($database);
}
function updateZones()
{
}
/**
get all mobs in zone
*/
function getMobsInZone()
{
$vnum_max=$this->vnum+99;
$sql = "select vnum,vnum_room,count from ".$GLOBALS['table_creature_state']." where vnum>='$this->vnum' and vnum<='$vnum_max'";
$result = $this->execSQL($sql);
$mobs = array();
while($row = $result->fetchRow())
{
$mobs[] = array("vnum" => $row[0],"vnum_room" => $row[1], "count" => $row[2]);
}
return $mobs;
}
function getRoomInZone()
{
$vnum_max=$this->vnum+99;
$sql = "select vnum from $this->table_name where vnum>='$this->vnum' and vnum<='$vnum_max'";
$result = $this->execSQL($sql);
$rooms = array();
while($row = $result->fetchRow())
{
$rooms[] = array("vnum" => $row[0]);
}
return $rooms;
}
function getCountRoomInZone()
{
$vnum_max=$this->vnum+99;
$sql = "select vnum from $this->table_name where vnum>='$this->vnum' and vnum<='$vnum_max'";
$result = $this->execSQL($sql);
return $result->numRows();
}
/**
update mobs in zone
*/
function updateMobsInZone()
{
//update hp for mobs
$sql = "select vnum,hp,hp_max from data_mobs_state where hp<hp_max and state!=".STATE_COMBAT;
$result = $this->execSQL($sql);
while($row = $result->fetchRow())
{
//up hp
$hp=$row[1]+5;
if($hp>$row[2]) $hp=$row[2];
$this->mob_state->setVnum($row[0]);
$this->mob_state->setCurHP($hp);
}
//insert killing mobs in zone
$mobs = $this->getMobsInZone();
foreach($mobs as $v){
$curr_count_mobs = $this->mob_state->getCountAllMob($v['vnum']);
$count_need = $v['count'] - $curr_count_mobs;
if($count_need>0){
for($i=0;$i<$count_need;$i++){
$this->insertMobInZone($v['vnum'],$v['vnum_room']);
}
}
}
}
/**
insert mob in zone
if room=0, mobs insert random in this zone
*/
function insertMobInZone($vnum_mobs,$room=0)
{
$vnum_uuid = getUniqID();
if($room==0){
$count_room=$this->getCountRoomInZone();
$room = $this->vnum+rand(0,$count_room-1);
}
$state = STATE_STAND;
$this->mob_state->setVnum($vnum_mobs);
$creature = new CCreatureBase($this->db,$vnum_mobs);
$hp = $creature->getHP();
$sql = "insert into data_mobs_state(vnum,vnum_mob,vnum_room,hp,hp_max,state) values ('$vnum_uuid','$vnum_mobs','$room','$hp','$hp','$state')";
$result = $this->execSQL($sql);
}
}
?>