Вход Регистрация
Файл: 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);
    }
}

?>
Онлайн: 2
Реклама