Вход Регистрация
Файл: _gladiators2_/gladiators2/gladiators/gladiators/battle/class_battle.php
Строк: 585
<?php
class battle
{
var 
$id;
var 
$start;
var 
$finish;
var 
$timeout;
var 
$side1;
var 
$side2;
var 
$winner;
var 
$action;
var 
$kick_time;
var 
$data;
var 
$hp;
var 
$type;
var 
$battle_w;

  function 
get_info($id)
  {
    
$result = @mysql_query("select id,start,finish,timeout,side1,side2,winner,action,kick_time,data,hp,type,battle from battle where id='$id'");
    if(@
mysql_num_rows($result)==0) return false;
    else
    {
     
$mass = @mysql_fetch_array($result);

     
$this->id $mass["id"];
     
$this->start $mass["start"];
     
$this->finish $mass["finish"];
     
$this->timeout $mass["timeout"];
     
$this->side1 $mass["side1"];
     
$this->side2 $mass["side2"];
     
$this->winner $mass["winner"];
     
$this->action $mass["action"];
     
$this->kick_time $mass["kick_time"];
     
$this->data $mass["data"];
     
$this->hp $mass["hp"];
     
$this->type $mass["type"];
     
$this->battle_w $mass["battle"];

     return 
true;
    }
  }

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------



  
function write()
  {
    
$sql="update battle set id='$this->id',finish='$this->finish', side1='$this->side1', side2='$this->side2', winner='$this->winner', action='$this->action', kick_time='$this->kick_time', hp='$this->hp' where id='$this->id'";
    
$result=@mysql_query($sql);
  }

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------


  
function put_note($note)
  {
    
$log_date explode(" ",$this->start); 

    
$fp = @fopen("battle/log/".$log_date[0].".dat","a+");
    @
flock($fp,2);
    @
fwrite($fp,$this->id."|".Date("H:i")."|".$note."|n");
    @
flock($fp,3);
    @
fclose($fp);
  }

  function 
kick($f,$b,$opponent_id,$my_id,$opp_side,$myself,$kick_opponent)
  {



   
// $opponent_id - id номер соперника, которому я наношу удар.
   // $my_id - мой id.

    
$dead1 0// First player not dead
    
$dead2 0// Second player no dead

    
if($opp_side=="side2")
    {
     
$ch_opp_side 2;
     
$ch_my_side 1;
    }
    else
    {
     
$ch_opp_side 1;
     
$ch_my_side 2;
    }

    if(
$opp_side=="side2")
    {
      
$comm_myself_color="#A0522D";
      
$comm_opponent_color="#708090";
    }
    else
    {
      
$comm_myself_color="#708090";
      
$comm_opponent_color="#A0522D";
    }

    
//------------------------------------------------------
    //-- Вычисляем процентные характеристики двух персонажей
    //-- Гибкость = 1% уворота && 1% антикрита
    //-- Логика = 1% крита && 1% уворота 

    //-- Установленный крит первого персонажа

    
$krit_myself $myself->mfkrit $myself->l;
    
$real_krit_myself $krit_myself $kick_opponent->mfakrit round($kick_opponent->l/2) - round($kick_opponent->g/2);

    if(
$real_krit_myself 0)
     
$real_krit_myself 0;

    
//-- Установленный крит второго персонажа

    
$krit_opponent $kick_opponent->mfkrit $kick_opponent->l;
    
$real_krit_opponent $krit_opponent $myself->mfakrit round($myself->l/2) - round($myself->g/2);

    if(
$real_krit_opponent 0)
     
$real_krit_opponent 0;

    
//-- Установленный уворот первого персонажа

    
$uvert_myself $myself->mfuvert $myself->g;
    
$real_uvert_myself $uvert_myself $kick_opponent->mfauvert round($kick_opponent->g/2) - round($kick_opponent->l/2);

    if(
$real_uvert_myself 0)
     
$real_uvert_myself 0;

    
//-- Установленный уворот второго персонажа
  
    
$uvert_opponent $kick_opponent->mfuvert $kick_opponent->g;
    
$real_uvert_opponent $uvert_opponent $myself->mfauvert round($myself->g/2) - round($myself->l/2);

    if(
$real_uvert_opponent 0)
     
$real_uvert_opponent 0;
 
    
//-- Установленный урон первого персонажа

    
srand ((double) microtime() * 1000000);
    
$real_uron_myself rand($myself->uronmin,$myself->uronmax) + round(rand($myself->u*0.9,$myself->u*1.1));

    
//-- Установленный урон второго персонажа

    
srand ((double) microtime() * 1000000);
    
$real_uron_opponent rand($kick_opponent->uronmin,$kick_opponent->uronmax) + round(rand($kick_opponent->u*0.9,$kick_opponent->u*1.1));

    
//---------------------

    
$comment = array();
    
$action_mass explode(";",$this->action);

    for(
$i=0;$i<=count($action_mass)-2;$i++)
    {
      
$a_mass explode("(",$action_mass[$i]);
      
$id_mass explode(":",$a_mass[0]);
      
$b_mass explode(")",$a_mass[1]);
      
$kick_mass explode(":",$b_mass[0]);

      if(
$id_mass[1]==$my_id && $id_mass[0]==$opponent_id && !$kick_mass[1])
      {
        
$opponent_kick=explode(",",$kick_mass[0]);
        
$opponent_f=$opponent_kick[0];  // Удар противника
        
$opponent_b=$opponent_kick[1]; // Блок противника
      
}
    }

    
$block_zones = array('1,5,','1,2,','2,3,','3,4,','4,5,');
    
$plc_kick = array("голову","грудь","живот","пояс","ноги");

    if(
$opponent_f && $opponent_b)
    {
      
$need_zones_block_opponent $block_zones[$f-1];
      
$need_zones_block_opponent explode(",",$need_zones_block_opponent);

      if(
$opponent_b != $need_zones_block_opponent[0] && $opponent_b != $need_zones_block_opponent[1])
      {

        if(
$myself->mfaarmor 100)
         
$maxmfaarmor $myself->mfaarmor;
        else 
         
$maxmfaarmor 100;

        if(
$krit_myself $krit_opponent)
         
$maxmfkrit $krit_myself;
        else
         
$maxmfkrit $krit_opponent;
  
        if(
$uvert_myself $uvert_opponent)
         
$maxmfuvert $uvert_myself;
        else
         
$maxmfuvert $uvert_opponent;

        if(
rand(1,$maxmfkrit) <= $real_krit_myself// Удар - крит
         
$uronkrit round($real_uron_myself*1.5);
        else
         
$uronlite $real_uron_myself;

        
srand ((double) microtime() * 1000000);

        if((
rand(1,$maxmfuvert) <= $real_uvert_opponent)) // Удар - уворот
        
{
          
$uronlite 0$uronkrit 0$comm 1;
          
$comm_fr file("battle/comment/evade.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','evade','".$kick_opponent->id."','".$myself->id."','0','0','".$f."','0','0')";
        }
        elseif(
rand(1,$maxmfaarmor) > $myself->mfaarmor// Не Удар сквозь броню
        
{
          switch(
$f)
          {
            case
"1":
              
$uronkrit -= $kick_opponent->armhead;
              
$uronlite -= $kick_opponent->armhead;
            break;
            case
"2":
              
$uronkrit -= $kick_opponent->armcorpus;
              
$uronlite -= $kick_opponent->armcorpus;
            break;
            case
"3":
              
$uronkrit -= $kick_opponent->armcorpus;
              
$uronlite -= $kick_opponent->armcorpus;
            break;
            case
"4":
              
$uronkrit -= $kick_opponent->armbelt;
              
$uronlite -= $kick_opponent->armbelt;
            break;
            case
"5":
              
$uronkrit -= $kick_opponent->armhand;
              
$uronlite -= $kick_opponent->armhand;
            break;
          }
        }

        if(
$myself->mfpowkrit && $uronkrit)
        {
         
$plusuron = ($myself->mfpowkrit*$uronkrit)/100;
         
$uronkrit round($uronkrit+$plusuron);
        }

        if(
$myself->mfuron && $uronlite)
        {
          
$plusuron = ($myself->mfuron*$uronlite)/100;
          
$uronlite round($uronlite+$plusuron);
        }

        if(
$kick_opponent->defuron && $uronlite)
         
$uronlite -= $kick_opponent->defuron;

        if(
$uronlite 0)
        {
          
$futur_hp $kick_opponent->hp $uronlite;

          if(
$futur_hp <= 0)
          {
            
$futur_hp 0;
            
$dead1 1;
          }

          if(
strstr($kick_opponent->login,"(клон)"))
           
$from "temp";
          else
           
$from "users";

          @
mysql_query("update ".$from." set hp='".$futur_hp."' where id='".$kick_opponent->id."'");

         
          
srand ((double) microtime() * 1000000);

          
$comm_fr file("battle/comment/attack.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));

      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','attack','".$kick_opponent->id."','".$myself->id."','0','".$uronlite."','".$f."','".$futur_hp."','".$kick_opponent->maxhp."')";
          
$comm 1;

          
$my_hp += $uronlite;
        }

        if(
$uronkrit 0)
        {
         
$futur_hp $kick_opponent->hp $uronkrit;

         if(
$futur_hp <= 0)
         {
          
$futur_hp 0;
          
$dead1 1;
         }

         if(
strstr($kick_opponent->login,"(клон)"))
          
$from "temp";
         else
          
$from "users";

         @
mysql_query("update ".$from." set hp='".$futur_hp."' where id='".$kick_opponent->id."'"); 

          
srand ((double) microtime() * 1000000);
      
$comm_fr file("battle/comment/attack.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));

      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','attack','".$kick_opponent->id."','".$myself->id."','1','".$uronkrit."','".$f."','".$futur_hp."','".$kick_opponent->maxhp."')";
          
$my_hp += $uronkrit;
        }        

        if(
$uronlite <= && $uronkrit <= && $comm!=1)
        {
          
$comm 1;
          
$comm_fr = @file("battle/comment/evade.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','evade','".$kick_opponent->id."','".$myself->id."','0','0','".$f."','0','0')";
        }
      }
      else
      {
        
$comm 1;
        
$comm_fr = @file("battle/comment/block.dat");
        
$rand_frases rand(0,(count($comm_fr)-1));
    
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','block','".$kick_opponent->id."','".$myself->id."','0','0','".$f."','0','0')";
      }

      
$uronlite 0;
      
$uronkrit 0;
      
$comm 0;

      
$need_zones_block_myself $block_zones[$opponent_f-1];
      
$need_zones_block_myself explode(",",$need_zones_block_myself);

      if(
$b != $need_zones_block_myself[0] && $b != $need_zones_block_myself[1])
      {

        if(
$kick_opponent->mfaarmor 100)
         
$maxmfaarmor $myself->mfaarmor;
        else 
         
$maxmfaarmor 100;

        if(
$krit_myself $krit_opponent)
         
$maxmfkrit $krit_myself;
        else
         
$maxmfkrit $krit_opponent;
  
        if(
$uvert_myself $uvert_opponent)
         
$maxmfuvert $uvert_myself;
        else
         
$maxmfuvert $uvert_opponent;

        if(
rand(1,$maxmfkrit) <= $real_krit_opponent// Удар - крит
         
$uronkrit round($real_uron_opponent*1.5);
        else
         
$uronlite $real_uron_opponent;

        if((
rand(1,$maxmfuvert) <= $real_uvert_myself)) // Удар - уворот
        
{
          
$uronlite 0$uronkrit 0$comm 1;
          
$comm_fr = @file("battle/comment/evade.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','evade','".$myself->id."','".$kick_opponent->id."','0','0','".$opponent_f."','0','0')";
        }
        elseif(
rand(1,$maxmfaarmor) > $kick_opponent->mfaarmor// Не Удар сквозь броню
        
{
         switch(
$opponent_f)
         {
          case
"1":
           
$uronkrit -= $myself->armhead;
           
$uronlite -= $myself->armhead;
          break;
          case
"2":
           
$uronkrit -= $myself->armcorpus;
           
$uronlite -= $myself->armcorpus;
          break;
          case
"3":
           
$uronkrit -= $myself->armcorpus;
           
$uronlite -= $myself->armcorpus;
          break;
          case
"4":
           
$uronkrit -= $myself->armbelt;
           
$uronlite -= $myself->armbelt;
          break;
          case
"5":
           
$uronkrit -= $myself->armhand;
           
$uronlite -= $myself->armhand;
          break;
          }
         }


        if(
$kick_opponent->mfpowkrit && $uronkrit)
        {
         
$plusuron = ($kick_opponent->mfpowkrit*$uronkrit)/100;
         
$uronkrit round($uronkrit+$plusuron);
        }

        if(
$kick_opponent->mfuron && $uronlite)
        {
          
$plusuron = ($kick_opponent->mfuron*$uronlite)/100;
          
$uronlite round($uronlite+$plusuron);
        }

        if(
$myself->defuron && $uronlite)
         
$uronlite -= $myself->defuron;


        if(
$uronlite 0)
        {
          
$futur_hp $myself->hp $uronlite;

          if(
$futur_hp <= 0)
          {
            
$futur_hp 0;
            
$dead2 1;
          }

          if(
strstr($myself->login,"(клон)"))
           
$from "temp";
          else
           
$from "users";

          @
mysql_query("update ".$from." set hp='".$futur_hp."' where id='".$myself->id."'");


          
srand ((double) microtime() * 1000000);
          
$comm_fr = @file("battle/comment/attack.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','attack','".$myself->id."','".$kick_opponent->id."','0','".$uronlite."','".$opponent_f."','".$futur_hp."','".$myself->maxhp."')";
          
$opp_hp += $uronlite;
        }

        if(
$uronkrit 0)
        {
         
$futur_hp $myself->hp $uronkrit;

         if(
$futur_hp <= 0)
         {
          
$futur_hp 0;
          
$dead2 1;
         }

         if(
strstr($myself->login,"клон"))
          
$from "temp";
         else
          
$from "users";

         @
mysql_query("update ".$from." set hp='".$futur_hp."' where id='".$myself->id."'"); 

          
srand ((double) microtime() * 1000000);
          
$comm_fr = @file("battle/comment/attack.dat");
          
$rand_frases rand(0,(count($comm_fr)-1));
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','attack','".$myself->id."','".$kick_opponent->id."','1','".$uronkrit."','".$opponent_f."','".$futur_hp."','".$myself->maxhp."')";
          
$opp_hp += $uronkrit;
        }
        
        if(
$uronlite<=&& $uronkrit<=&& $comm!=1)
        {
         
$comm_fr = @file("battle/comment/evade.dat");
         
$rand_frases rand(0,(count($comm_fr)-1));
     
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','evade','".$myself->id."','".$kick_opponent->id."','0','0','".$opponent_f."','0','0')";
        }
       }
       else
       {
        
$comm 1;
        
$comm_fr = @file("battle/comment/block.dat");
        
$rand_frases rand(0,(count($comm_fr)-1));
        
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','block','".$myself->id."','".$kick_opponent->id."','0','0','".$opponent_f."','0','0')";
       }


       
$comm_fr = @file("battle/comment/dead.dat");
       
$rand_frases rand(0,(count($comm_fr)-1));

       if(
$dead1)
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','dead','".$kick_opponent->id."','0','0','0','1','0','0')";

       
$rand_frases rand(0,(count($comm_fr)-1));

       if(
$dead2)
      
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','dead','".$myself->id."','0','0','0','1','0','0')";



       
$action = @str_replace($opponent_id.":".$my_id."("$opponent_f.","$opponent_b.":);","",$this->action);
       
$this->action $action;

       
$mass_kick_time explode(";",$this->kick_time);

       for(
$i=0;$i<=count($mass_kick_time)-1;$i++)
       {
          
$a_mass explode("=",$mass_kick_time[$i]);
          if(
$a_mass[0]==$myself->id)
          {
            
$new_time time();
            
$mass_kick_time[$i]=$myself->id."=".$new_time;
          }
          if(
$a_mass[0]==$kick_opponent->id)
          {
            
$new_time time();
            
$mass_kick_time[$i]=$kick_opponent->id."=".$new_time;
          }
        }
        
$this->kick_time implode(";",$mass_kick_time);
    }
    else
    {
      if(
strstr($this->$opp_side,$opponent_id.";"))
      {
        
$action $this->action.$my_id.":".$opponent_id."(".$f.",".$b.":);";
        
$this->action=$action;
        
$mass_kick_time explode(";",$this->kick_time);
        for(
$i=0;$i<=count($mass_kick_time)-1;$i++)
        {
          
$a_mass explode("=",$mass_kick_time[$i]);
          if(
$a_mass[0]==$myself->id)
          {
           
$new_time time();
           
$mass_kick_time[$i]=$myself->id."=".$new_time;
          }
        }
        
$this->kick_time=implode(";",$mass_kick_time);
      }
    }
    
    
$values "";

    for(
$i=0;$i<=count($comment)-1;$i++) {

    if( 
$i )
        
$values .= ",";
    
$values .= $comment[$i]; 
    }

    @
mysql_query("insert into battle_logs values ".$values);

    
$mass_hp explode(";",$this->hp);
    for(
$i=0;$i<=count($mass_hp)-1;$i++)
    {
     
$a_mass explode("=",$mass_hp[$i]);

     if(
$a_mass[0]==$myself->id)
      
$a_mass[1] = $a_mass[1] + $my_hp;

     if(
$a_mass[0]==$kick_opponent->id)
      
$a_mass[1] = $a_mass[1] + $opp_hp;

     
$mass_hp[$i] = implode("=",$a_mass);
    }

    
$this->hp implode(";",$mass_hp);
   }

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------


 
function winner()
 {

  
$side1 explode(";",$this->side1);
  
$side2 explode(";",$this->side2);

  for(
$i=0;$i<=count($side1)-2;$i++)
  {
   if(!
$i)
    
$query " id=".$side1[$i]; 
   else
    
$query .= " or id=".$side1[$i];
  }

  
$res_users = @mysql_query("select hp from users where ".$query);
  
$num_users = @mysql_num_rows($res_users);

  
$hp_side1_down_kol=0;

  for(
$i=1;$i<=$num_users;$i++)
  {
   
$row_users = @mysql_fetch_array($res_users);
   if(
$row_users["hp"] <= 0)
    
$hp_side1_down_kol++;
  }

  for(
$i=0;$i<=count($side2)-2;$i++)
  {
   if(!
$i)
    
$query " id=".$side2[$i]; 
   else
    
$query .= " or id=".$side2[$i];
  }

  if(
$this->type=="bot")
   
$from "temp";
  else
   
$from "users";

  
$res_users = @mysql_query("select hp from ".$from." where ".$query);
  
$num_users = @mysql_num_rows($res_users);

  
$hp_side2_down_kol 0;

  for(
$i=1;$i<=$num_users;$i++)
  {
   
$row_users = @mysql_fetch_array($res_users);
   if(
$row_users["hp"] <= 0)
    
$hp_side2_down_kol++;
  }

  if(
$hp_side1_down_kol==(count($side1)-1) and $hp_side2_down_kol==(count($side2)-1))
  {
   
$this->winner 'noone';
   
$this->finish time();
   
$finished 1;
  }
  elseif(
$hp_side1_down_kol==(count($side1)-1))
  {
   
$this->winner 'side2';
   
$this->finish time();
   
$finished 1;
  }
  elseif(
$hp_side2_down_kol==(count($side2)-1))
  {
   
$this->winner 'side1';
   
$this->finish time(); 
   
$finished 1;
  }
  
  if(
$finished)
  {
   if(
$this->type=="bot")
    
$mass_sides $this->side1;
   else
    
$mass_sides $this->side1.$this->side2;

   
$mass_sides explode(";",$mass_sides);

   for(
$i=0;$i<=count($mass_sides)-2;$i++)
   {
    if(!
$i)
     
$query " id='".$mass_sides[$i]."'";
    else
     
$query .= " or id='".$mass_sides[$i]."'";
   }

   @
mysql_query("update users set last_update_uron='".time()."' where ".$query);
 
   
$winner $this->winner;
   
$mass_sides explode(";",$this->$winner);

   for(
$i=0;$i<=count($mass_sides)-2;$i++)
   {
    if(!
$i)
     
$query " id='".$mass_sides[$i]."'";
    else
     
$query .= " or id='".$mass_sides[$i]."'";
   }
 
   if(
$this->type=="bot" && $this->winner=="side2")
    
$from "temp";
   else
    
$from "users";

   
$res = @mysql_query("select login from ".$from." where ".$query);
   
$num = @mysql_num_rows($res);
    
   for(
$i=1;$i<=$num;$i++)
   {
    
$row = @mysql_fetch_array($res);
    if(
$i==1)
     
$winner_side $row["login"];
    else
     
$winner_side .= ",".$row["login"];  
   }

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