Вход Регистрация
Файл: _gladiators2_/gladiators2/gladiators/gladiators/system/class/class_battle.php
Строк: 577
<?
class battle extends DBconn 
{
    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;
    var 
$myself;
    var 
$opponent;
    
    function 
get_info($id) {

        
$this->query("select id,start,finish,timeout,side1,side2,winner,action,kick_time,data,hp,type,battle from battle where id='$id'");
        
$this->num_rows();
        
        if( !
$this->num )
            return 
false;
           else {
               
            
$this->fetch_array();

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

             return 
true;
        }
    }


    function 
write() {
      
          
$this->query("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."'");
      }

      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;

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

           
$real_uron_myself mt_rand($myself->uronmin,$myself->uronmax) + round(mt_rand($myself->u*0.9,$myself->u*1.1));

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

           
$real_uron_opponent mt_rand($kick_opponent->uronmin,$kick_opponent->uronmax) + round(mt_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;

                   if((
mt_rand(1,$maxmfuvert) <= $real_uvert_opponent)) // Удар - уворот
                   
{
                       
$uronlite 0$uronkrit 0$comm 1;
                       
$comm_fr file("battle/comment/evade.dat");
                       
$rand_frases mt_rand(0,(count($comm_fr)-1));
                       
$comment[] = "('".$this->id."','".$rand_frases."','".time()."','evade','".$kick_opponent->id."','".$myself->id."','0','0','".$f."','0','0')";
                   }
                   elseif(
mt_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 )
                   {
                       
$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."'");

                       
$comm_fr = @file("battle/comment/attack.dat");
                       
$rand_frases mt_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 )
                   {
                       
$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."'");

                       
$comm_fr file("battle/comment/attack.dat");
                       
$rand_frases mt_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!=)
                   {
                       
$comm 1;
                       
$comm_fr = @file("battle/comment/evade.dat");
                       
$rand_frases mt_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 mt_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( 
mt_rand(1,$maxmfkrit) <= $real_krit_opponent // Удар - крит
                       
$uronkrit round($real_uron_opponent*1.5);
                   else
                       
$uronlite $real_uron_opponent;

                   if((
mt_rand(1,$maxmfuvert) <= $real_uvert_myself)) // Удар - уворот
                   
{
                       
$uronlite 0$uronkrit 0$comm 1;
                       
$comm_fr = @file("battle/comment/evade.dat");
                       
$rand_frases mt_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(
mt_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 )
                   {
                       
$futur_hp $myself->hp $uronlite;

                       if( 
$futur_hp <= )
                       {
                           
$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."'");

                       
$comm_fr = @file("battle/comment/attack.dat");
                       
$rand_frases mt_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 )
                   {
                       
$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."'");

                       
$comm_fr = @file("battle/comment/attack.dat");
                       
$rand_frases mt_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!=)
                   {
                       
$comm_fr = @file("battle/comment/evade.dat");
                       
$rand_frases mt_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 mt_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 mt_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 mt_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];
           }

           
$this->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"];  
   }

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